关于 c#:httpWebRequest.AutomaticDecompression 未设置”Accept_Encoding:gzip”标头

httpWebRequest.AutomaticDecompression does not set "Accept_Encoding: gzip" header

我在我的 .net 3.0 应用程序中使用 Web 服务引用,并且正在尝试设置 gzip 解码。

当我使用 SoapUI 时,响应是用 gzip 压缩的,因为在请求中设置了标题 \\'Accept-Encoding: gzip,deflate\\'。发送我的 .net 请求时,它没有此标头,因此服务器未压缩响应。

我找到了这个链接,它准确地描述了我想要做什么。我实现了代码并使用调试器验证它在每个请求上都被执行,但它仍然没有添加 \\'Accept-Encoding:gzip\\' 标头。

接下来,我通过链接在类中手动添加了标题。

1
httpWebRequest.Headers.Add("Accept-Encoding","gzip");

我终于收到了来自服务器的压缩响应!但是不,现在我得到一个格式错误的 xml 异常,我很确定这是因为即使使用链接中的类设置了以下内容,响应也没有被解压缩。

1
httpWebRequest.AutomaticDecompression = DecompressionMethods.GZip;;

我不明白出了什么问题。


好的,我找到了解决问题的方法。

因为我使用的是网络引用,所以你必须在网络引用对象上设置 EnableDecompression = true

所以解决方案是这样的

1
2
3
4
var client = new ReferredService
{
    EnableDecompression = true
}

ReferredService 是 Web 引用名称。