【问题标题】:Which HTTP header must be sent when call webrequest or webclient?调用 webrequest 或 webclient 时必须发送哪个 HTTP 标头?
【发布时间】:2011-09-14 04:23:34
【问题描述】:

我正在创建一个网络机器人。通常 http 工具会返回很多信息,其中一些是只读的(例如 Connect: keep-alive)。如何知道需要哪些?

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset: ISO-8859-9,utf-8;q=0.7,*;q=0.3
Accept-Encoding: gzip,deflate,sdch
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control: max-age=0
Content-Length: 269
Content-Type: application/x-www-form-urlencoded
Host: closure-compiler.appspot.com
Origin: null
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko)       Chrome/14.0.794.0 Safari/535.1

通常代码如下所示。有人指出下面的代码错过了设置Content-Type?

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://closure-compiler.appspot.com/compile");
req.Connection = "keep-alive";
req.Headers.Add("Cache-Control", "max-age=0");
req.Headers.Add("Origin","null");
req.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.794.0 Safari/535.1";
req.ContentType = "application/x-www-form-urlencoded";
req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
req.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
req.Headers.Add("Accept-Language", "tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4");
req.Headers.Add("Accept-Charset", " ISO-8859-9,utf-8;q=0.7,*;q=0.3");
req.Method = "POST";

Stream reqStr = req.GetRequestStream(); 

【问题讨论】:

    标签: c# httpwebrequest web-crawler webclient webrequest


    【解决方案1】:

    一般请求不需要标头。特定资源可能需要不同的标头。正确的方法是询问资源所有者需要哪些标头。但是,如果您想在某种游戏/论坛中作弊,则必须自己弄清楚标题和其他值。

    【讨论】:

    • 我明白了。谢谢。所以这似乎是一个与网站相关的问题。
    【解决方案2】:

    根据 w3.org 的说法,最简单的请求应该类似于:

    GET <uri> CrLf
    

    仅此而已。

    【讨论】:

      猜你喜欢
      • 2015-02-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2017-08-05
      • 2012-01-09
      • 1970-01-01
      • 2019-03-29
      • 2014-09-20
      相关资源
      最近更新 更多