我正在创建一个骆驼 Web 应用程序,通过骆驼-restlet 组件公开一个 REST 端点,并且在压缩 xml 响应的字符编码方面遇到了一些问题。
我已经手动将 Content-Type 和 charset 分别设置为text/xml
and UTF-8
;将 Content-Encoding 设置为gzip
并将该<marshal><gzip/></marshal>
模式用作骆驼路由中的最终组件,以便将压缩后的有效负载返回给客户端。
从路由返回的有效负载会导致无效的 gzip 文件。我已经在 gzip 编组的每个阶段使用 Notepad++ 检查了有效负载并进行了传输——之前看到了我的有效 XML——在<marshal/>
步骤之后看到了有效的 gzip 文件,但是客户端收到的响应似乎已经被 restlet 组件以不同的方式编码.
正常的[US]<
初始标头显示在 Notepad++ 中的有效 gzip 文件中,但是它<
已被编码为�
来自 restlet 的响应,以及其他可打印字符的不同表示。这将返回给curl
我的客户和我的客户Accept-Encoding: gzip
- 这导致我怀疑我需要删除/更改 restlet 组件中的默认字符编码。删除字符集标头给了我一个不同的、仍然错误编码的响应,这似乎证实了我的怀疑。
如果我认为restlet是导致二进制数据编码变化的组件是正确的,我应该设置/删除哪种编码,如果不是,我应该寻找什么来通过restlet输出有效的gzipped有效负载?
非常感谢您花时间阅读,
中音