我有一个WCF服务,我向它发出API请求。这个API调用返回一个JSON响应对象,并且当在“Accept-Encoding”头中使用“gzip”值时,也能够以GZIP压缩方式返回它。
问题是,当我试图在GZIP中获取响应时,Postman显示“无法获取任何响应”,尽管我在Fiddler中看到响应和响应的内容是OK(200状态代码),并且可以轻松地在我的C#客户端中解压缩响应内容。
我在Postman Console中查看了一下,但我看到的是**“错误:不正确的标题检查”**。我几乎没有试图找到任何关于这个头检查的文档,但找不到任何。
请求头如下:
POST /correction/v1/document?lang=US HTTP/1.1
Content-Type: text/plain
Accept-Encoding: gzip
User-Agent: PostmanRuntime/7.6.0
Accept: */*
content-length: 630
Connection: close
以下是响应头:
HTTP/1.1 200 OK
Content-Length: 512
Content-Type: application/json; charset=utf-8
Content-Encoding: gzip
Server: Microsoft-HTTPAPI/2.0
Date: Sun, 24 Feb 2019 14:05:50 GMT
Connection: close
我唯一怀疑是错误的是这条来自Fiddler的消息:
我把这段代码集成到我的代码中,以便在WCF中使用GZIP。https://github.com/carlosfigueira/WCFSamples/tree/master/MessageEncoder/GZipEncoderAndAutoFormatSelection
基本上,它在返回客户端之前捕获响应并使用GZipStream进行压缩。
5条答案
按热度按时间yzckvree1#
我也遇到了同样的问题,我添加了以下标题来解决这个问题。
hgc7kmma2#
我能够通过使用header
Accept-Encoding: */*
解决类似的问题,或者如果你想具体做Accept-Encoding: */*
,HTTP客户端将能够根据接收到的编码类型处理响应,在gzip的情况下,它将解码响应并将其显示为普通文本。xfb7svmp3#
对我来说,我删除了请求头中的“Accept-Encoding”。
cuxqih214#
我在REST服务返回
zip
内容时遇到了这个问题。WinZip格式)。我通过使用7zip压缩数据来产生真正的gzip
来解决这个错误。7xzttuei5#
当$config['compress_output'] = true;