1

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();
    }
}

Web ページを要求および受信するためのかなり標準的なコードです。応答が空である理由はありますか? 前もって感謝します。

EDIT URLのクエリ文字列パラメーターを省略しました。&count=100 もありましたが、これを修正しました。値が 50 以下の場合は機能するようですが、それより大きい場合は何も返されません。これはブラウザでは問題なく機能しますが、この Web リクエストでは機能しません。

問題は、応答が大きく、HttpWebResponse が私が設定した方法でそれを処理していないことだと思います。推測ですが。

4

2 に答える 2

1

これは私のマシンでは問題なく動作します。おそらく、あなたは Bing から IP 禁止されていますか?

于 2010-04-07T12:02:31.347 に答える
1

あなたのコードは私のマシンで正常に動作します。

Fiddlerのコピーを入手して、実際に発生している HTTP セッションを調べることをお勧めします。プロキシまたはファイアウォールの可能性があります。

于 2010-04-07T12:06:38.437 に答える