使用httpclient提交表单数据加号(+)会被自动替换成空格的坑
坑的场景:
今天使用httpclient-4.5.3版本,发送如下报文:
{ "idNo": "7+6+0+2ce722a546b39463bd62817fe57f8" }
结果接收方接受到的报文+号转换成了空格:
{ "idNo": "7 6 0 2ce722a546b39463bd62817fe57f8" }
原因: 这是由于url编码规范引起的。
解决方案:请求体写成如下:
HttpPost httpPost = new HttpPost(reqURL); httpPost.setHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded; charset=utf-8"); List<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>(); pairList.add(new BasicNameValuePair("reqParam", "{"id":"123"}")); httpPost.setEntity(new UrlEncodedFormEntity(pairList, "utf-8"));
其中request中的BasicPostPara用来存放post请求对应的参数。