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());
}
那么没问题,但只查询支持字符串。
答案 0 :(得分:0)
简短回答:如果您使用form()
,则无法更改请求的内容类型和内容长度。它是一种特殊的方法,用于在体内发送编码为multipart或url编码方式的参数。这只是HTTP的规范:)通过更改内容类型,您的服务器将获得不正确的请求:它会期望json正文,而不是表单参数。
您可以通过两种方式解决此问题:
bodyText()
并使用application/json
内容类型;或form
。如果您可以解释为什么在此请求中没有涉及json的情况下,为什么需要将content-type的默认值更改为JSON?