使用httpclient提交表单数据加号(+)会被自动替换成空格的坑

时间:2021-05-08 14:34:04

坑的场景:

       今天使用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请求对应的参数。