Retrofit 请求数据返回乱码问题笔记

本文探讨了使用OkHttp时遇到的乱码问题,并详细解释了如何通过调整请求头中的Accept-Encoding来解决这一问题。当使用Gson解析JSON时出现异常,通过去除自定义的Accept-Encoding头信息,让OkHttp自动处理解压缩步骤,从而解决了乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用默认Gson解析,一直解析错误

java.lang.IllegalStateException: ExpectedBEGIN_OBJECT but was STRING at line 1 column 1 path $

一开始以为Gson解析问题 后来发现不是 因为我把Gson换成了自定义的 StringConverterFactory或者ScalarsConverterFactory 的string直接读取后台的json 。

结果一直是乱码,且我抓包返回数据是没有问题的

再根据okhttp 返回乱码结果查询半天,发现是请求头里的

.addheader(“Accept-Encoding”, “gzip”);问题

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

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

去掉请求头里的addheader(“Accept-Encoding”, “gzip”);

应该是服务器后台已经设置数据gzip压缩算法 ,我们前端就不需要了 否则再压缩数据就是乱码

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值