HttpClient模拟客户端向 服务器接口 传递 Json 数据


HttpClient向服务器接口 传递 json参数,参数要做特殊的处理,否则报错。

错误原因是:HttpGet或 HttpPost都不能传包含 " 、“{"、"}"这样的参数,需要对特殊字符进行转义,把 " 转成%22,把 { 转成%7b,把 } 转成%7d

干脆直接自己 replaceAll 算了,两次:
“{” => %7B

“}” => %7D


对了,URLEncode从?之后的参数开始,不要把域名和路径也放进去了。



String x = IOUtility.read2String("d:/pushlog.txt");
x = URLEncoder.encode(x,"UTF-8");
x = x.replace(" ", "").replace("\"", "%22");
x = x.replace("{", "%B").replace("}", "%7D");
		
String uri = "http://10.131.80.148:8080/receive/log?data=" + x;  
HttpGet get = new HttpGet(uri);
System.out.println(get);
HttpResponse res = client.execute(get);;
	

[java]   view plain copy
  1. RequestVo reqVo = new RequestVo();  
  2. reqVo.context = getApplicationContext();  
  3.   
  4. StringBuffer sb = new StringBuffer();  
  5. sb.append("?info={\"type\":\"1\",");  
  6. sb.append("\"shopid\":\"" + shopId + "\",");  
  7. sb.append("\"fields\":{\"name\":true,");  
  8. sb.append("\"address\":true,");  
  9. sb.append("\"tel\":true,");  
  10. sb.append("\"scores\":true,");  
  11. sb.append("\"intro\":true}}");  
  12.   
  13. String param = sb.toString().replace("\"""%22")  
  14.         .replace("{""%7b").replace("}""%7d");   //特殊字符进行转义  
  15. reqVo.requestUrl = getString(R.string.detail_api).concat(param);  
  16. reqVo.jsonParser = new ShopParser();  
  17.   
  18. BaseTask task = new BaseTask(getApplicationContext(), reqVo,  
  19.         handler);  
  20.   
  21. ThreadPoolManager.getInstance().addTask(task);  


注意:参数里面如果有 空格的话,也需要转义,否则会有问题。


你可能感兴趣的:(HttpClient模拟客户端向 服务器接口 传递 Json 数据)