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

在Spring Boot中使用Web客户端Mono获取API响应错误消息

乐正浩宕
2023-03-14

我正在使用webflux Mono(在Spring Boot5中)来使用一个外部API。当API响应状态代码为200时,我能够很好地获取数据,但当API返回错误时,我无法从API中检索错误消息。Spring webclient错误处理程序始终将消息显示为

ClientResponse具有错误的状态代码:500内部服务器错误,但当我使用PostMan时,API返回状态代码为500的JSON响应。

{
 "error": {
    "statusCode": 500,
    "name": "Error",
    "message":"Failed to add object with ID:900 as the object exists",
    "stack":"some long message"
   }
}

我使用WebClient的请求如下

webClient.getWebClient()
            .post()
            .uri("/api/Card")
            .body(BodyInserters.fromObject(cardObject))
            .retrieve()
            .bodyToMono(String.class)
            .doOnSuccess( args -> {
                System.out.println(args.toString());
            })
            .doOnError( e ->{
                e.printStackTrace();
                System.out.println("Some Error Happend :"+e);
            });

我的问题是,当API返回状态代码为500的错误时,我如何获得对JSON响应的访问?

共有1个答案

田兴怀
2023-03-14

查看.onerrormap(),它给出了要查看的异常。由于您可能还需要exchange()的body()来查看,所以不要使用retrieve,但是

.exchange().flatMap((ClientResponse) response -> ....);
 类似资料:
  • 只是想知道有没有办法得到spring Web-Flux的web客户端的响应时间?

  • 我正在使用Spring Data Elasticsearch来获取一些聚合,并尝试使用ReactiveElasticsearchClient。我从Elasticsearch得到一个500错误,但我不知道如何获得响应的主体,以便调试请求的错误。以下是我目前掌握的情况: 为组织启用跟踪日志记录。springframework。数据elasticsearch。客户WIRE,将记录请求正文,但响应的日志行

  • 我正在spring应用程序中使用web客户端 我在执行相同操作时面临内存泄漏问题 我正在使用下面的代码获取来自服务的非2xx响应的响应体: 我的问题是,如果我在responseMono上使用dispose方法,处理过程需要很长的时间,而没有它,我会面临内存泄漏问题。我在这里做错什么了吗?

  • 问题内容: 我试图从Web服务而不是通常的POJO集合中获取原始XML响应。 我正在使用从WSDL和某些模式生成的Web服务客户端(因此我可以访问该客户端的代码)。该客户端是在RAD 7.5中生成的,我认为是使用JAX- WS。我一直在研究客户端代码本身,但是我什至不确定客户端代码是否处理过原始XML或是否将其传递给其他库。 问题答案: 您可以使用 您可以使用方法简单地获取消息并将消息转换为Str

  • 例如,在本文中,我试图理解为什么在流中使用flatmap()(直接从引用中粘贴副本) AFAIK,应用于流的平面图会为流中的每个输入值产生任意数量的值(0... n)。所以一个平面图需要一个产生流的函数。 通量发射0个或多个项目,然后可选地完成或偏离。 那么,响应流上到底发生了什么?这是接收响应流并发出0个或更多类警报对象的函数吗?因此,如果我们

  • 但是,我不确定为什么它不输出get请求的值?它实际上并不触发endpoint。