我正在尝试在C#中发送看起来像来自某个软件的HTTP请求的HTTP请求。我想使用System.Net.HttpWebRequest
,但它没有给我我需要的控件标题:它们的letter-casing无法更改(例如我希望Connection
标题为{{1}而不是keep-alive
),我没有完全控制标题排序等。
我尝试使用CodeScales库中的Keep-Alive
。不幸的是,它没有自动解压缩响应(参见HttpClient
)。我自己使用HttpWebRequest.AutomaticDecompression
和System.IO.Compression.GZipStream
对其进行了解压缩,但是当响应具有标头Transfer-Encoding: chunked
时,它无效。
<{1}}似乎比DeflateStream
更能控制标题,但仍然不够。
怎么做?
编辑:我知道HTTP无论如何都接受这些标头是有效的,但我正在使用一个验证标头的服务器,如果它们不完全符合预期,则拒绝回复。< / p>
答案 0 :(得分:0)
要在HTTPWebRequest类中设置一些标头,您必须使用该类中的属性(例如HttpWebRequest.KeepAlive = true),或者您必须通过调用add方法将自定义标头添加到请求中。请求标头。 重要的是,您尝试添加标题(以自定义方式),而它已经是请求的属性,它会向您发送错误。
objRequest.Headers.Add("Accept", "some data");
不正确。你宁愿说。
objRequest.Accept = "some data";
在您的情况下,您可以:
objRequest.KeepAlive = true;
不要太担心信件外壳,只要您将适当的标头发送到服务器,这并不重要。