httpWebRequest.AutomaticDecompression未设置“Accept_Encoding:gzip”标头

时间:2011-02-01 18:26:14

标签: c# .net web-services httpwebrequest

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

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

我发现这个link描述了我想要做的事情。我实现了代码,并通过调试器验证了它是在每个请求上执行的,但它仍然没有添加'Accept-Encoding:gzip'标头。

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

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

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

httpWebRequest.AutomaticDecompression = DecompressionMethods.GZip;;

我无法理解出了什么问题。

1 个答案:

答案 0 :(得分:2)

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

由于我使用的是Web引用,您必须在Web引用对象上设置EnableDecompression = true

所以解决方案是这样的

var client = new ReferredService
                 {
                     EnableDecompression = true
                 }

其中ReferredService是Web引用名称。