java ofString(jsonasstring)不会在POST请求中放入任何内容

wsxa1bj1  于 2023-04-10  发布在  Java
关注(0)|答案(2)|浏览(139)

我正在尝试使用自定义头部和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请求为空

我在谷歌上搜索了许多论坛,代码示例等...但我看到,我的代码在正确的地方,根据许多例子,我看到。
所以如果有人知道我的问题是什么?提前感谢!

ttp71kqs

ttp71kqs1#

您需要在请求头中将Content-Type设置为application/json。
参见:Which JSON content type do I use?

o7jaxewo

o7jaxewo2#

我也遇到了同样的问题,我通过添加一个头部,将Content-Type设置为application/x-www-form-urlencoded,并编写凭据URL encoded来解决。

HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://example.com/post.php"))
        .header("Content-Type", "application/x-www-form-urlencoded")
        .POST(BodyPublishers.ofString("password=password&email=someone@example.com"))
        .build();

相关问题