1. 程式人生 > >使用httpclient提交表單資料加號(+)會被自動替換成空格的坑

使用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請求對應的引數。