首页 > 上网技巧 > 电脑小技巧 > android OkHttpUtils 使用JSON数据作为请求参数

android OkHttpUtils 使用JSON数据作为请求参数

时间:2017-08-30 08:56 作者:QQ地带 我要评论

如果就直接将JSON作为请求字符串,服务端会出现中文乱码。所以只需要将请求的整个JSON参数字符串编码一次,然后服务端解码一次。我这里服务端使用的servlet,下面会两段代码贴出。
 
android:
 
  1. String url = customSessionSingleton.getInstance().requestBaseUrl+"AlipayInterface"; 
  2. try { 
  3.     OkHttpUtils.post().url(url).addParams("masterParameter", URLEncoder.encode(passSessionData.toString(), "UTF-8")) .build().execute(new StringCallback() { 
  4.         @Override 
  5.         public void onBefore(Request request, int id) { 
  6.  
  7.         } 
  8.         @Override 
  9.         public void onAfter(int id) { 
  10.  
  11.         } 
  12.         @Override 
  13.         public void onError(Call call, Exception e, int id) { 
  14.             e.printStackTrace(); 
  15.             String json=  e.getMessage(); 
  16.         } 
  17.         @Override 
  18.         public void onResponse(String response, int id) { 
  19.             JSONObject    returnJSONObject = null
  20.             try { 
  21.                 returnJSONObject=new JSONObject(response) ; 
  22.  
  23.                 if(returnJSONObject.getInt( "Success" )==1) 
  24.                 { 
  25.                     if(payWay.equals( "支付宝" )) { 
  26.  
  27.  
  28.         serverSignStrserverSignStr=serverSignStr+"&signsign=" + returnJSONObject.getString( "sign" ); 
  29.  
  30.                     Runnable payRunnable = new Runnable() { 
  31.  
  32.                         @Override 
  33.                         public void run() { 
  34.                             PayTask alipay = new PayTask(HomeFragment_RechargeActivity.this); 
  35.                             Map<String, String> result = alipay.payV2(serverSignStr, true); 
  36.                             Log.i("msp", result.toString()); 
  37.  
  38.                             Message msg = new Message(); 
  39.                             msg.what = SDK_PAY_FLAG
  40.                             msg.obj = result
  41.                             alipayHandle.sendMessage(msg); 
  42.                         } 
  43.                     }; 
  44.  
  45.                     Thread payThread = new Thread(payRunnable); 
  46.                     payThread.start(); 
  47.  
  48.                     } 
  49.                     else if(payWay.equals( "微信" )) 
  50.                     { 
  51.  
  52.  
  53.                     } 
  54.                     else if(payWay.equals( "全积分抵扣" )) 
  55.                     { 
  56.  
  57.                      Dialog alertDialog = new AlertDialog.Builder(HomeFragment_RechargeActivity.this). 
  58.                 setTitle("登录用户,全积分抵扣"). 
  59.                 setMessage("全积分抵扣"). 
  60.                 setIcon(R.drawable.ic_launcher). 
  61.                 create(); 
  62.         alertDialog.show(); 
  63.  
  64.                             mLoading.dismiss(); 
  65.  
  66.  
  67.                     } 
  68.                 } 
  69.                 else 
  70.                 { 
  71.  
  72.                 } 
  73.             } catch (JSONException e) { 
  74.                 e.printStackTrace(); 
  75.             } 
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.         } 
  83.     }); 
  84. } catch (UnsupportedEncodingException e) { 
  85.     e.printStackTrace(); 
 
 
 
Servlet:
 
    JSONObject    requestObject=new JSONObject(URLDecoder.decode(request.getParameter("masterParameter"),"utf-8"));
               String account= requestObject.getString("account");

标签: Android
顶一下
(0)
0%
踩一下
(0)
0%

Google提供的广告