坑的場景:
今天使用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請求對應的參數。