2010-04-07 62 views
1

我有以下代碼發送一個HttpWebRequest到必應。當我請求下面的url時,雖然它返回的結果應該是返回結果列表時看起來是空的響應。HttpWebRequest有空響應請求從Bing搜索

var response = string.Empty; 
var httpWebRequest = WebRequest.Create("http://www.bing.com/search?q=stackoverflow&count=100") as HttpWebRequest; 

httpWebRequest.Method = WebRequestMethods.Http.Get; 
httpWebRequest.Headers.Add("Accept-Language", "en-US"); 
httpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Win32)"; 
httpWebRequest.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate"); 

using (var httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse) 
{ 
    Stream stream = null; 
    using (stream = httpWebResponse.GetResponseStream()) 
    { 
     if (httpWebResponse.ContentEncoding.ToLower().Contains("gzip")) 
      stream = new GZipStream(stream, CompressionMode.Decompress); 
     else if (httpWebResponse.ContentEncoding.ToLower().Contains("deflate")) 
      stream = new DeflateStream(stream, CompressionMode.Decompress); 

     var streamReader = new StreamReader(stream, Encoding.UTF8); 
     response = streamReader.ReadToEnd(); 
    } 
} 

它用於請求和接收網頁的相當標準的代碼。任何想法爲什麼響應是空的?提前致謝。

編輯我離開了url中的查詢字符串參數。我也有& count = 100,現在我已經糾正了。它似乎適用於50以下的值,但在更大時不返回任何值。這可以在瀏覽器中正常工作,但不適用於此Web請求。

它讓我覺得問題是響應很大,HttpWebResponse沒有像我那樣處理這個問題。只是一個猜測。

回答

1

這工作得很好,在我的機器上。也許你是從Bing被禁止的IP?

+0

謝謝Jan.我可以使用瀏覽器搜索bing,所以我沒有被禁止。 – 2010-04-07 12:14:04

+0

With&count = 100,我的瀏覽器和應用程序中都沒有顯示結果。所以有這個問題。試試這個庫:http://thibautvs.com/blog/?p=643 – 2010-04-07 12:23:24

1

您的代碼在我的機器上正常工作。

我建議你自己複製Fiddler並檢查實際的HTTP會話發生。可能是代理或防火牆的事情。

+0

感謝您的迴應。我離開了url的count查詢字符串參數。我已將它設置爲count = 100。 – 2010-04-07 12:18:37