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

时间:2014-08-04 07:23:21

标签: c# http encoding http-headers compression

我正在尝试在C#中发送看起来像来自某个软件的HTTP请求的HTTP请求。我想使用System.Net.HttpWebRequest,但它没有给我我需要的控件标题:它们的letter-casing无法更改(例如我希望Connection标题为{{1}而不是keep-alive),我没有完全控制标题排序等。

我尝试使用CodeScales库中的Keep-Alive。不幸的是,它没有自动解压缩响应(参见HttpClient)。我自己使用HttpWebRequest.AutomaticDecompressionSystem.IO.Compression.GZipStream对其进行了解压缩,但是当响应具有标头Transfer-Encoding: chunked时,它无效。 <{1}}似乎比DeflateStream更能控制标题,但仍然不够。

怎么做?

编辑:我知道HTTP无论如何都接受这些标头是有效的,但我正在使用一个验证标头的服务器,如果它们不完全符合预期,则拒绝回复。< / p>

1 个答案:

答案 0 :(得分:0)

要在HTTPWebRequest类中设置一些标头,您必须使用该类中的属性(例如HttpWebRequest.KeepAlive = true),或者您必须通过调用add方法将自定义标头添加到请求中。请求标头。 重要的是,您尝试添加标题(以自定义方式),而它已经是请求的属性,它会向您发送错误。

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

不正确。你宁愿说。

    objRequest.Accept = "some data";

在您的情况下,您可以:

    objRequest.KeepAlive = true;

不要太担心信件外壳,只要您将适当的标头发送到服务器,这并不重要。