1. 程式人生 > >android OkHttpUtils 使用JSON數據作為請求參數

android OkHttpUtils 使用JSON數據作為請求參數

解碼 pre servlet tar con supported lag decode sse

如果就直接將JSON作為請求字符串,服務端會出現中文亂碼。所以只需要將請求的整個JSON參數字符串編碼一次,然後服務端解碼一次。我這裏服務端使用的servlet,下面會兩段代碼貼出。

android:

                    String url = customSessionSingleton.getInstance().requestBaseUrl+"AlipayInterface";
                    try {
                        OkHttpUtils.post().url(url).addParams("masterParameter
", URLEncoder.encode(passSessionData.toString(), "UTF-8")) .build().execute(new StringCallback() { @Override public void onBefore(Request request, int id) { } @Override
public void onAfter(int id) { } @Override public void onError(Call call, Exception e, int id) { e.printStackTrace(); String json= e.getMessage(); } @Override
public void onResponse(String response, int id) { JSONObject returnJSONObject = null; try { returnJSONObject=new JSONObject(response) ; if(returnJSONObject.getInt( "Success" )==1) { if(payWay.equals( "支付寶" )) { serverSignStr=serverSignStr+"&sign=" + returnJSONObject.getString( "sign" ); Runnable payRunnable = new Runnable() { @Override public void run() { PayTask alipay = new PayTask(HomeFragment_RechargeActivity.this); Map<String, String> result = alipay.payV2(serverSignStr, true); Log.i("msp", result.toString()); Message msg = new Message(); msg.what = SDK_PAY_FLAG; msg.obj = result; alipayHandle.sendMessage(msg); } }; Thread payThread = new Thread(payRunnable); payThread.start(); } else if(payWay.equals( "微信" )) { } else if(payWay.equals( "全積分抵扣" )) { Dialog alertDialog = new AlertDialog.Builder(HomeFragment_RechargeActivity.this). setTitle("登錄用戶,全積分抵扣"). setMessage("全積分抵扣"). setIcon(R.drawable.ic_launcher). create(); alertDialog.show(); mLoading.dismiss(); } } else { } } catch (JSONException e) { e.printStackTrace(); } } }); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }

Servlet:

    JSONObject    requestObject=new JSONObject(URLDecoder.decode(request.getParameter("masterParameter"),"utf-8"));
               String account= requestObject.getString("account");

android OkHttpUtils 使用JSON數據作為請求參數