2017-07-25 30 views
1

HttpRequest的設置形式的內容類型無效jodd HttpRequest的形式集合內容類型無效

@Test 
public void getImgCode() { 
    Map<String, Object> param = new HashMap<>(); 
    param.put("userId", "11111"); 
    HttpRequest request = HttpRequest.post(baseUrl + "openapi/api/v2/getCode") 
      .header("content-type","application/json;charset=utf-8") 
      .form(param); 

    System.out.println(request.contentType()); 

    HttpResponse response = request.send(); 
    System.out.println(response.bodyText()); 
} 

但打印內容類型=應用程序/ x-WWW窗體-urlencoded;字符集= UTF-8

如果使用httpQequest.query(param)那麼沒問題,但查詢只支持字符串。

回答

0

簡答:如果您使用form(),則無法更改請求的內容類型和內容長度。這是一種特殊的方法,用於在主體中發送編碼爲多部分或網址編碼方式的參數。這只是HTTP的規範:)通過更改內容類型,您的服務器將得到不正確的請求:它會期望json正文,而不是表單參數。

您可以通過兩種方式解決此問題:

  1. 要麼encode您輸入到JSON並將其設置爲bodyText()和使用application/json內容類型;或
  2. 請勿嘗試更改內容類型並使用form

如果你可以解釋爲什麼當這個請求中沒有涉及json時,你需要將content-type的默認值更改爲JSON會有幫助嗎?

相關問題