我正在尝试使用自定义头部和json作为主体字符串来创建POST请求
这是我的代码
HttpRequest request2 = HttpRequest.newBuilder()
.uri(URI.create(POSTS_API_URL))
.headers("accept", "text/plain; charset=UTF-8", "XF-Api-Key", "MYAPIKEY")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
System.out.println(request2); //result : https://******.fr/api/auth/ POST
System.out.println(request2.headers()); //result : java.net.http.HttpHeaders@8e33ff08 { {accept=[text/plain; charset=UTF-8], XF-Api-Key=[MYAPIKEY]} }
HttpResponse<String> response2 = client.send(request2, HttpResponse.BodyHandlers.ofString());
// print status code
System.out.println(response2.statusCode()); //400
// print json code
System.out.println(json); //{"login":"LunaLune","password":"***********"}
// print response body
System.out.println(response2.body()); //mandatory input missing : login, password
我的json String
String json = "{" +
"\"login\":\"LunaLune\"," +
"\"password\":\"*********\"" +
"}";
但是当我打印请求时,我得到:https://********. fr/api/auth/POST
POST请求为空
我在谷歌上搜索了许多论坛,代码示例等...但我看到,我的代码在正确的地方,根据许多例子,我看到。
所以如果有人知道我的问题是什么?提前感谢!
2条答案
按热度按时间ttp71kqs1#
您需要在请求头中将Content-Type设置为application/json。
参见:Which JSON content type do I use?
o7jaxewo2#
我也遇到了同样的问题,我通过添加一个头部,将Content-Type设置为application/x-www-form-urlencoded,并编写凭据URL encoded来解决。