我有以下代码将 HttpWebRequest 发送到 Bing。当我请求下面的 url 虽然它返回似乎是一个空响应时,它应该返回一个结果列表。
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 并没有按照我设置它的方式为我处理。不过只是猜测。