【发布时间】:2016-03-02 17:30:56
【问题描述】:
我正在尝试从 Google App Engine 应用程序发送 JSON HTTP 请求并检索响应,虽然这在本地运行良好,但当我将其部署到 GAE 时它突然中断。
更准确地说,返回给我的应用程序的 HTTP 响应正文最终看起来像这样,而不是简单的 JSON:
�\bD�[��8��ʖϣ�M�M$ �\\�bA` @!r���~pvk�cR]�_7E�
我确实发现了一组我在 GAE 上得到正确响应的情况,这可能会对这种行为提供一些见解 - 如果响应没有 content-type 标头,它会正常运行,但只要有 content-编码标头设置为“gzip”目前我得到不正确的垃圾作为响应正文。
很遗憾,我无法控制我正在调用的服务。所以我唯一的选择就是以某种方式解决这个问题,但为了解决这个问题,我试图了解谷歌所做的回应之间的区别。有人知道吗?
我了解 Google does some things 到 HTTP 流量。它是否也强制我的回复使用 gzip?
我也尝试过使用编码,尝试将响应读取为 utf-8,并按照推荐的 here 将 utf-8 设置为我的 GAE 应用程序的默认编码,但没有任何效果。我已经排除了在我的代码或我正在使用的任何东西中对响应的错误处理,至少我是这么认为的,否则我会在本地遇到同样的问题。我试图了解到底发生了什么,希望这能让我知道如何预防它。
编辑:我想通了并做了一个解决方法,但它仍然是一种解决方法,而不是解决方案。因此,我的 GAE 应用程序从 GAE 外部调用另一个 Web 服务,该服务有时 gzip 响应,有时不响应。如果是这样,GAE 会从响应中删除内容类型标头,从而阻止我的应用程序正确解码响应正文。到目前为止,我的解决方法是获取响应字节并测试响应是否是有效的 JSON,如果不是则手动解压缩。仍然想知道是否可以防止剥离内容类型...
【问题讨论】:
标签: google-app-engine character-encoding content-type