HTTP请求,其头可控制并自动解压缩



我试图在c#中发送HTTP请求,看起来像来自某个软件的HTTP请求。我想使用System.Net.HttpWebRequest,但它并没有给我控制它的头:他们的字母大小写不能改变(例如,我想要Connection头是keep-alive而不是Keep-Alive),我没有完全控制头的顺序,等等。

我尝试使用CodeScales库中的HttpClient。不幸的是,它不能自动解压缩响应(参见HttpWebRequest.AutomaticDecompression)。我自己用System.IO.Compression.GZipStreamDeflateStream解压它,但是当响应具有标题Transfer-Encoding: chunked时,它不起作用。System.Net.Http.HttpRequestHeaders似乎比HttpWebRequest对标题有更多的控制,但仍然不够。

怎么做呢?

编辑:我知道HTTP接受这些标头作为有效的,但我正在与服务器一起工作,验证标头并拒绝响应,如果它们不完全是它所期望的。

要在HTTPWebRequest类中设置一些头,您必须使用类中的属性(例如HTTPWebRequest)。KeepAlive = true),或者您必须通过调用请求头的add方法来向请求添加自定义头。重要的是,当你试图添加标头(以自定义方式)时,它已经是请求的一个属性,它会给你一个错误。

    objRequest.Headers.Add("Accept", "some data");

是不正确的。你宁可说。

    objRequest.Accept = "some data";

你可以:

    objRequest.KeepAlive = true;

不用太担心字母大小写,只要您向服务器发送适当的标题就没关系。

最新更新