【问题标题】:Binary HTTP response content when expecting JSON text期望 JSON 文本时的二进制 HTTP 响应内容
【发布时间】:2013-11-21 17:03:02
【问题描述】:

我正在使用 delphi XE3 将一些图像上传到服务器,我已经用 chrome 截获了请求,并且我基本上使用 IDhttp 发送了完全相同的请求,服务器以 200 OK 响应,所以我想一切都很好。 问题是,我需要获取响应内容来获取上传图片的链接,但我得到的只是:

    ‹      •ÒK
à  лÌ:Ôù¨Õ\¥)P‚‹¤…,Cî^K–ÅÂlddà1¿ê:/e‡ñq@®kÙöúÚRÍ0Wº}&³–\çÉ×^   6   ä“‹ÄŽ's÷!²½½·Îᇣ¨â„1Ù€=I¥±Å$®¯±®¶ˆ‰±¯©íW¦Ûà?ËêFÖbñ=Ë©,j·Á¡gyÅßá_Öóü gÊr Á  

这是什么?如何获取 Json 响应?

在 Chrome 上截获的响应标头是:

Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:169
Content-Type:application/json
Date:Thu, 21 Nov 2013 12:29:40 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=5, max=100
p3p:CP="CAO PSA OUR"
Pragma:no-cache

    Server:Apache/2.2.22 (Debian)
    Vary:User-Agent,Accept-Encoding
    X-Powered-By:PHP/5.4.4-14+deb7u3t-Type:application/json

【问题讨论】:

标签: delphi http encoding gzip indy


【解决方案1】:

来自响应头:

 Content-Encoding:gzip

所以它是压缩数据。不允许在 HTTP 请求中压缩或使用 gzip 解压缩数据。

【讨论】:

【解决方案2】:

响应头表示内容被压缩:

Content-Encoding:gzip

小心你的要求。如果您告诉服务器您可以接受 gzip,则服务器实际上可能会将 gzip 压缩后的内容发送给您。您可能正在手动设置 Accept-Encoding 标头。

而不是发送如下请求标头:

Accept-Encoding: gzip

您可以发送一个请求标头,说明您不需要任何编码:

Accept-Encoding: identity

请参阅以下问题以正确配置 gzip 的 TIdHTTP

Failed to decode response content using IdHttp

【讨论】:

    猜你喜欢
    • 2019-11-17
    • 2016-05-09
    • 1970-01-01
    • 2017-08-06
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    相关资源
    最近更新 更多