spring webflux ClientRequest的body转string代码示例
时间: 2023-11-23 20:07:22 浏览: 75
以下给出一个完整的示例代码,演示如何将`ClientRequest`的body转换为字符串:
```
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.client.ClientRequest;
import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.reactive.function.client.WebClientResponseException;
import reactor.core.publisher.Mono;
public class WebClientExample {
public static void main(String[] args) {
WebClient webClient = WebClient.create("https://jsonplaceholder.typicode.com");
String requestBody = "{\"title\": \"foo\",\"body\": \"bar\",\"userId\": 1}";
ClientRequest clientRequest = ClientRequest
.post("/posts")
.contentType(MediaType.APPLICATION_JSON)
.body(BodyInserters.fromValue(requestBody))
.build();
webClient.exchange(clientRequest)
.flatMap(response -> response.bodyToMono(String.class))
.subscribe(body -> {
System.out.println("Response body: " + body);
}, error -> {
if (error instanceof WebClientResponseException) {
WebClientResponseException exception = (WebClientResponseException) error;
System.out.println("Error response body: " + exception.getResponseBodyAsString());
} else {
error.printStackTrace();
}
});
}
}
```
在上面的示例中,我们使用`WebClient`发送一个POST请求到`https://jsonplaceholder.typicode.com/posts`,请求体为一个JSON字符串。在`exchange`方法中,我们传入了一个`ClientRequest`对象,并使用`flatMap`操作符将`ClientResponse`的body转换为`Mono<String>`对象。最后,我们在订阅方法中处理转换后的字符串。如果发生异常,我们将打印出错误响应体的字符串。