android retrofit乱码,Retrofit 2.0 请求返回乱码

本文介绍了解决使用retrofit2.0+OKHttp进行网络请求时遇到的乱码问题,通过设置正确的字符编码gb2312,成功获取了国家气象局天气预报接口返回的正常JSON数据。

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

请求返回乱码

最近在搞 retrofit 2.0 + OKHttp 网络请求的时候(个人喜欢瞎搞),想测试一下是否可以请求到数据,所以从网上搜一下免费的 api 来测试。

国家气象局提供的天气预报接口:

很开心可以找到一个不用注册的 api,结果却意外地获取不到数据,看一下日志返回的数据是一堆乱码,脸一下子就黑了 T_T。

7881b45c786a

TIM截图20170717095027.png

经过一阵瞎搞,终于发现这丫的居然用的是 gb2312 编码 ,不愧是国家气象局,就是爱国。既然不是一般规定的 UTF-8 编码 ,就需要在请求头来添加编码格式。

mOKHttpClientBuilder = new OkHttpClient.Builder();

mOKHttpClientBuilder.connectTimeout(15, TimeUnit.SECONDS);

mOKHttpClientBuilder.addInterceptor(new Interceptor() {

@Override

public Response intercept(Chain chain) throws IOException {

Request request = chain.request()

.newBuilder()

.addHeader("Content-Type", "text/html; charset=gb2312")

.addHeader("Content-Type", "text/html; charset=UTF-8")

.addHeader("Accept-Encoding", "*")

.addHeader("Connection", "keep-alive")

.addHeader("Accept", "*/*")

.addHeader("Access-Control-Allow-Origin", "*")

.addHeader("Access-Control-Allow-Headers", "X-Requested-With")

.addHeader("Vary", "Accept-Encoding")

.addHeader("Cookie", "add cookies here")

.build();

return chain.proceed(request);

}

});

添加文件头之后就可以返回正常的 json 。

7881b45c786a

TIM截图20170717095523.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值