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

使用HttpClient向服务器接口发送Json参数时,需要对特殊字符如 "、{、} 进行URL转义,防止报错。通过replaceAll方法将 " 替换为 %22,{ 替换为 %7b,} 替换为 %7d,并注意不要对URL的域名和路径部分进行转义。同时,如果参数中有空格,也需要进行转义处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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);  


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值