我不确定这里的问题是Spray还是Play Framework。
我有一个运行在Spray上的API服务器,我正在使用WS lib从一个Play应用程序向它发出请求。在我的喷雾路径中,我使用了compressResponseIfRequested指令。当我使用curl发出请求时,我可以看到content-length比没有压缩时要短,并且content- coming头返回为"gzip“。
但是,当我使用WS从Play发出请求时,content-length是未压缩响应的长度,实际上,没有内容编码头。情况就是这样,即使我在请求中包含了一个Accept-Encoding: gzip头。我甚至可以看到,当我记录Spray应用程序内部的响应头时,因为它正在完成Content-Encoding: gzip头的请求。
我在这里做错了什么?任何进一步调试的建议都将不胜感激。
发布于 2015-01-24 05:07:22
这可能看起来有点疯狂,但请考虑尝试使用替代的HTTP客户端库,具体而言,我建议使用OkHttp。
OkHttp是一个优秀的现代基于Java的异步超文本传输协议库,它支持很多优秀的东西,如SNI,ETags上的基于磁盘的缓存等。我已经多次使用它作为Play-WS库(它是Netty-based,就像Dispatch)的问题修复替身。很容易包装OkHttp以供Scala使用,请参阅此拉取请求中更改的文件:
https://github.com/guardian/prout/pull/9/files#diff-1
绝对值得一试OkHttp!
https://stackoverflow.com/questions/28114863
复制相似问题