Retrofit 2.0 請求返回亂碼

請求返回亂碼

最近在搞 retrofit 2.0 + OKHttp 網(wǎng)絡(luò)請求的時候(個人喜歡瞎搞),想測試一下是否可以請求到數(shù)據(jù),所以從網(wǎng)上搜一下免費的 api 來測試。

國家氣象局提供的天氣預(yù)報接口:

很開心可以找到一個不用注冊的 api,結(jié)果卻意外地獲取不到數(shù)據(jù),看一下日志返回的數(shù)據(jù)是一堆亂碼,臉一下子就黑了 T_T。

TIM截圖20170717095027.png

經(jīng)過一陣瞎搞,終于發(fā)現(xiàn)這丫的居然用的是 gb2312 編碼 ,不愧是國家氣象局,就是愛國。既然不是一般規(guī)定的 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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容