美文网首页
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