使用OkHttp 2.7.5, 添加自定义拦截器处理了一些Http头信息后, 会导致OkHttp返回的JSON字符串变成如下内容:

�������������;����{“ret”:false,”message”:”不存在更新信息”,”data”:null}�sC;������

而抓包后的原始数据是没有问题的.

经查, 参考 http://stackoverflow.com/questions/33889840/retrofit-and-okhttp-gzip-decode , 是因为当你自己添加了头信息:

requestBuilder.header(“Accept-Encoding”“gzip”);

而这段代码导致了出错:

When you provide your own Accept-Encoding header you’re instructing OkHttp that you want to do your own decompression. By omitting it, OkHttp will take care of both adding the header and the decompression.

当你添加自己的 Accept-Encoding 头信息时, OkHttp会认为你要自己处理解压缩步骤. 删除这个头信息后, OkHttp 会自动处理加头信息和解压缩的步骤.

所以, 代码注释掉, 问题解决.

转载请注明:WebLogic Android 博客 » OkHttp添加拦截器后返回结果变乱码问题的解决