我使用spring webclient,代码如下:
public String HttpCall() {
Insurer insurer = new Insurer();
insurer.setName(“Axa”);
insurer.setId(“T-185785”);
ClientResponse response = webclient.post()
.uri("http://localhost:8080/process/insurer")
.header(HttpHeaders.AUTHORIZATION, token)
.accept(MediaType.APPLICATION_JSON)
.bodyValue(insurer)
.exchange()
.block(Duration.ofMinutes(5))
if (response.statusCode() == HttpStatus.OK) {
return response.bodyToMono(String.class).block();
} else
// eventually, other code here;
}
}
我需要的是在控制台上将有效负载显示为我身体的格式非常好的json(在我的代码片段中:pojo)
有人知道吗?
致以最诚挚的问候。
2条答案
按热度按时间bfrts1fy1#
这可以通过实现
Jackson2JsonEncoder
记录请求主体的。这篇博文对此进行了解释:https://andrew-flower.com/blog/webclient-body-logging.
构建webclient时,可以指定自定义编码器:
产生序列化字节的编码器示例如下:
因此,您可以使用打印到stdout的使用者创建编码器,并在第一个代码片段中将其传递给webclient builder。
请记住,这将是缓慢的,因为它是同步读取整个序列化数据。所以只能在dev/debug模式下使用。
hlswsv352#
打印json有多种方法。假设它是用于非生产和更多的调试。
我分享了一个使用jackson的例子(你可以使用任何你喜欢的库,也可以使用你选择的记录器,使用system.out.print只是为了演示。
你需要添加一个依赖项。
下面显示了一个简单的类来演示如何实现它。