jodd HttpRequest 表单集内容类型无效



HttpRequest set form 内容类型无效

@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());
}

但是打印内容类型 = application/x-www-form-urlencoded;字符集=UTF-8

如果使用httpQequest.query(param)没问题,但仅查询支持字符串。

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

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

  1. 将输入编码为 JSON 并将其设置为bodyText()并使用application/json内容类型;或者
  2. 不要尝试更改内容类型并使用form

如果您能解释为什么在此请求中不涉及 json 时需要将内容类型的默认值更改为 JSON,那将很有帮助?

相关内容

  • 没有找到相关文章

最新更新