当前位置: 首页 > 知识库问答 >
问题:

如何记录来自WebClient的每个响应?

武成和
2023-03-14

WebClient在springwebflux中提供了三种不同的方法来连接响应端:

java prettyprint-override">webClient.post().uri().body().retrieve().bodyToMono(String.class)
...
.doOnTerminte()
.doAfterTerminate()
.doFinally();

我的目标是记录每个响应(标题状态代码),不管结果如何。

我怎样才能知道上述哪种方法是正确的?

共有1个答案

巫马俊力
2023-03-14

我一直觉得这个API确实有点麻烦,但我认为依靠ResponseEntity可以简化您的情况:

.retrieve()
.toEntity(String.class)
// 4xx and 5xx responses result in a WebClientResponseException:
.onErrorResume(WebClientResponseException.class, e -> Mono.just(toEntity(e)))
.doOnNext(entity -> log.info(/* entity.getHeaders(), entity.getStatusCode(), etc. */))

使用toEntity(e)大致如下:

static <T> ResponseEntity<T> toEntity(WebClientResponseException e) {
    return ResponseEntity
            .status(e.getStatusCode())
            .headers(e.getHeaders())
            .build();
}
 类似资料:
  • 我是Spring WebClient的新手。有人能建议记录来自另一个WebService的REST请求和响应的最佳方法吗? 我已经看到了一个在问题中记录请求的示例,但也必须记录响应和POST调用的请求。如何记录Spring 5 WebClient调用 谢谢你。

  • 在Vertx WebClient中记录传出http请求和响应的最简单方法是什么。我正在寻找类似于httpserver LoggerHandler的东西,但接下来是webclient的输出请求。

  • 我需要一种在java中记录这个XML响应的方法。当我从我的java发送请求时,这是返回的。我需要一种打印出响应描述的方法。 下面是我的java代码:

  • 我正在尝试使用Spring 5 WebClient记录请求。你知道我怎样才能做到吗? (我使用的是Spring5和Spring靴2) 代码目前如下所示:

  • 我在改型API中找不到记录完整请求/响应体的相关方法。我希望在探查器中得到一些帮助(但它只提供关于响应的元数据)。我尝试在构建器中设置日志级别,但这也没有帮助: 编辑:此代码正在工作。我不知道为什么它在早些时候不起作用。可能是因为我用的是旧版本的改装。

  • 问题内容: 我想获得表中每个记录的最小日期,该记录具有一个主键的多个日期条目。看看我的桌子: 我想要这样的结果: 我想获取每个CaseNo的最短日期记录在我的桌子上。 我尝试了这段代码: 结果是这样的: 该代码删除没有最小日期的行。我想显示所有记录的最小日期为Min_date。 问题答案: 试试这个