加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 01:41:14 所属栏目:大数据 来源:网络整理
导读:我使用webflux Mono(在Spring boot 5中)使用外部API.当API响应状态代码为200时,我能够很好地获取数据,但是当API返回错误时,我无法从API检索错误消息. Spring webclient错误处理程序始终将消息显示为 ClientResponse有错误的状态代码:500内部服务器错误,但是

我使用webflux Mono(在Spring boot 5中)使用外部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响应?

最佳答案
查看.onErrorMap(),它为您提供了查看的异常.因为您可能还需要查看exchange()的body(),所以不要使用retrieve,而是

.exchange().flatMap((ClientResponse) response -> ....);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读