jodd HttpRequest表单设置内容类型无效

时间:2017-07-25 09:17:13

标签: java httprequest jodd

HttpRequest设置表单内容类型无效

<b>Email</b>: <a href="mailto:{{Email Address}}">{{Email Address}}</a><br>
  

但打印内容类型= application / x-www-form-urlencoded; charset = utf-8

如果使用@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()); } 那么没问题,但只查询支持字符串。

1 个答案:

答案 0 :(得分:0)

简短回答:如果您使用form(),则无法更改请求的内容类型和内容长度。它是一种特殊的方法,用于在体内发送编码为multipart或url编码方式的参数。这只是HTTP的规范:)通过更改内容类型,您的服务器将获得不正确的请求:它会期望json正文,而不是表单参数。

您可以通过两种方式解决此问题:

  1. 您对{JSON}的输入encode并将其设置为bodyText()并使用application/json内容类型;或
  2. 请勿尝试更改内容类型并使用form
  3. 如果您可以解释为什么在此请求中没有涉及json的情况下,为什么需要将content-type的默认值更改为JSON?