解決 OKHTTP 返回 Response 亂碼問題

下午調試一個 H5 支付 。數據那邊一直出問題 。

 

 

直接上代碼

   OkHttpClient mOkHttpClient = new OkHttpClient.Builder()
                .readTimeout(5, TimeUnit.SECONDS)//設置讀超時
                .writeTimeout(5, TimeUnit.SECONDS)////設置寫超時
                .connectTimeout(15, TimeUnit.SECONDS)//設置連接超時
                .retryOnConnectionFailure(true)//是否自動重連
                .build();


  RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
                .addFormDataPart("pay_amount", pay_amount)
                .addFormDataPart("pay_applydate",pay_applydate)
                .addFormDataPart("pay_bankcode",pay_bankcode)
                .addFormDataPart("pay_callbackurl", pay_callbackurl)
                .addFormDataPart("pay_memberid", pay_memberid)
                .addFormDataPart("pay_notifyurl", pay_notifyurl)
                .addFormDataPart("pay_orderid", pay_orderid)
                .addFormDataPart("pay_md5sign", pay_md5sign)
                .addFormDataPart("pay_attach", pay_attach)
                .addFormDataPart("pay_productname", pay_productname)
                .build();

   Request request = new Request.Builder()
                .url(" http://47.244.131.97:8081/Pay_Index.html")
                .method("POST", requestBody)
                .addHeader("Content-Type", "application/x-www-form-urlencoded")
                .addHeader("User-Agent", "PostmanRuntime/7.22.0")
                .addHeader("Accept", "*/*")
                .addHeader("Cache-Control", "no-cache")
                .addHeader("Postman-Token", "f4803fbd-8773-4788-a86e-3843a9f39469")
                .addHeader("Host", "47.244.131.97:8081")
                .addHeader("Accept-Encoding", "gzip, deflate, br")
                .addHeader("Cookie", "PHPSESSID=v182qe7rv0tk5mqqmk470ia2m6")
                .addHeader("Content-Length", "1345")
                .addHeader("Connection", "keep-alive")
                .addHeader("application/x-www-form-urlencoded","charset=utf-8")
                .build();


 Call call = mOkHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                    Log.d("onResponse111",response.body().string()+"--"+ response.body().contentType());

                Gson gson=new Gson();
                BYJHBean byjhBean = gson.fromJson(response.body().string(), BYJHBean.class);
                    Intent intent=new Intent(context,WebViewActivity.class);
                    intent.putExtra("name",byjhBean.getPay_url()+"");
                    Looper.prepare();
                    context.startActivity(intent);
                    Looper.loop();
            }
        });

返回數據打印。

 

原因是在 addHeader 的時候 ,下面這行代碼導致

.addHeader("Accept-Encoding", "gzip, deflate, br")

 

 

PS:因爲瀏覽器在傳輸數據量比較大的時候會採用壓縮的方式,但接收的時候沒有解壓所以就會出現亂碼。

 

註釋點上述代碼就可以。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章