解决 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:因为浏览器在传输数据量比较大的时候会采用压缩的方式,但接收的时候没有解压所以就会出现乱码。

 

注释点上述代码就可以。

你可能感兴趣的:(Share,小瑕疵)