美文网首页
Retrofit 2.0 请求返回乱码

Retrofit 2.0 请求返回乱码

作者: 适量哥 | 来源:发表于2017-07-17 10:16 被阅读805次
请求返回乱码

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

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

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

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 。

TIM截图20170717095523.png

相关文章

网友评论

      本文标题:Retrofit 2.0 请求返回乱码

      本文链接:https://www.haomeiwen.com/subject/gmrfkxtx.html