如何在 spring-boot web 客户端中发送请求正文?

Avv*_*Avv 10 webclient kotlin spring-boot spring-webflux

我在 Spring Boot Web 客户端发送请求正文时遇到了一些问题。尝试发送如下正文:

val body = "{\n" +
            "\"email\":\"test@mail.com\",\n" +
            "\"id\":1\n" +
            "}"
val response = webClient.post()
    .uri( "test_uri" )
    .accept(MediaType.APPLICATION_JSON)
    .body(BodyInserters.fromObject(body))
    .exchange()
    .block()
Run Code Online (Sandbox Code Playgroud)

它不工作。请求正文应为 JSON 格式。 请让我知道我哪里做错了。

Bri*_*zel 16

您没有设置"Content-Type"请求标头,因此您需要附加.contentType(MediaType.APPLICATION_JSON)到请求构建部分。


ham*_*uki 9

上面的答案是正确的:application/json在您的Content-Type标题中添加可以解决问题。虽然,在这个答案中,我想提到它BodyInserters.fromObject(body)已被弃用。从 Spring Framework 5.2 开始,建议使用BodyInserters.fromValue(body).