2017-07-25 68 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会有帮助吗?

相关问题