使用HttpClient進行POST請求時發現的一個坑(收到的JSON串後面多了個“=”)

        今天在使用HttpClient進行POST請求調用別人的接口一直失敗,查看請求報文與接口文檔完全一致;最後求助於接口開發側,抓取請求報文發現,他們接收到的JSON串後面多了個“=”號;然後通過在網上查找,問題解決。

       

原因:

        無論是使用HttpClient進行POST,還是前端使用ajax向Java後臺發送Json數據,默認請求的ContentType 是 application/x-www-form-urlencoded;charset=UTF-8 ,都會導致後臺接收到的Json數據末尾多一個 “=”。

   application/x-www-form-urlencoded;charset=UTF-8是一種鍵值對結構,傳輸時將JSON內容當作了key,value爲空,因此收到的報文Json的末尾多出一個等號。而Http接口提供者設置了ContentType類型,比如在Controller層的方法上添加了“@Produces("application/json;charset=UTF-8")”

 

解決方案:

        請求時,將ContentType 改成 application/json;charset=utf-8即可解決問題。

例:

HttpPost httppost = new HttpPost(url); // 創建http post

StringEntity stringEntity = new StringEntity(data, "utf-8"); // 創建請求參數

stringEntity.setContentType("application/json");

httppost.setEntity(stringEntity);

……

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章