0

次のような HTTP リクエスト ヘッダーを設定しています。

        this.Url = new Uri(u);
        HttpWebRequest http = (HttpWebRequest)WebRequest.Create(Url);
        WebResponse response = http.GetResponse();

        //headers
        http.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0\r\n";
        http.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
        http.Headers.Add("Accept-Encoding", "gzip,deflate,sdch'r'n");
        http.Headers.Add("Accept-Language", "en-US,en;q=0.9\r\n");
        http.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\n");

私は次のようにそれらをキャプチャしています:

            for (count = 0; count < http.Headers.Keys.Count; count++)
        {
            headerKey = http.Headers.Keys[count];
            headerValue = http.Headers[headerKey];

            if (headerValue != null)
            {
                if (headerKey == null)
                {
                    requestbuffer.Append(headerValue);
                    requestbuffer.Append(Newline); 
                }
                else
                {
                    requestbuffer.Append(headerKey + ": " + headerValue);
                    requestbuffer.Append(Newline);
                }
            }
        }

テスト ツールを実行すると、すべて問題ないように見えます。

  • ホスト: domain.com
  • 接続: キープアライブ
  • ユーザーエージェント: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0)Gecko/20100101 Firefox/17.0
  • 受け入れる: text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8
  • Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.9
  • Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

ただし、Wireshark と Fiddler では、次のヘッダーのみが送信されます。

  • GET / HTTP/1.1
  • ホスト: domain.com

それはなぜでしょうか?

4

2 に答える 2

3

を呼び出したにヘッダーを追加しようとしていますhttp.GetResponse()。リクエストが送信されたです。これを次のように変更します。

this.Url = new Uri(u);
HttpWebRequest http = (HttpWebRequest)WebRequest.Create(Url);

//headers
http.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0\r\n";
http.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
http.Headers.Add("Accept-Encoding", "gzip,deflate,sdch'r'n");
http.Headers.Add("Accept-Language", "en-US,en;q=0.9\r\n");
http.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\n");

using (WebResponse response = http.GetResponse())
{
    // Do whatever
}

(実際には応答を破棄する必要があることに注意してください。)

于 2012-12-07T14:22:03.257 に答える
1

はい、リクエストを送信した後にヘッダーを設定しています。

これを試して:

    //headers
    http.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0\r\n";
    http.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
    http.Headers.Add("Accept-Encoding", "gzip,deflate,sdch'r'n");
    http.Headers.Add("Accept-Language", "en-US,en;q=0.9\r\n");
    http.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\n");

    //Added diesposal of response too
    using (WebResponse response = http.GetResponse())
    {
    }
于 2012-12-07T14:22:58.217 に答える