使用httpclient提交表單資料加號(+)會被自動替換成空格的坑
阿新 • • 發佈:2018-12-11
坑的場景:
今天使用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請求對應的引數。