首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Webclient :当http状态码为200时如何获取出错的正文

Spring WebClient 是 Spring Framework 提供的一种非阻塞的、基于响应式流的 HTTP 客户端,它可以用来发送 HTTP 请求并接收响应。当 HTTP 状态码为 200 时,表示请求成功,而如果请求成功但返回的正文中包含错误信息,我们可以通过以下步骤来获取出错的正文:

  1. 创建 WebClient 对象:
代码语言:txt
复制
WebClient webClient = WebClient.builder().baseUrl("http://example.com").build();
  1. 发送请求并处理响应:
代码语言:txt
复制
webClient.get()
    .uri("/api/endpoint")
    .retrieve()
    .onStatus(HttpStatus::isError, response -> {
        // 当 HTTP 状态码为错误状态时的处理逻辑
        return response.bodyToMono(String.class).flatMap(body -> {
            // 获取出错的正文内容
            System.out.println("错误正文:" + body);
            // 抛出自定义异常或进行其他操作
            throw new CustomException("请求出错:" + body);
        });
    })
    .bodyToMono(String.class)
    .subscribe(responseBody -> {
        // 正常处理响应内容
        System.out.println("响应正文:" + responseBody);
    });

在上述代码中,我们使用 onStatus 方法来处理 HTTP 状态码为错误状态时的情况。通过调用 response.bodyToMono(String.class) 方法,我们将响应体转换为字符串并获取出错的正文内容。你可以根据具体的业务需求进行自定义异常抛出或其他处理操作。

推荐的腾讯云相关产品:无

Spring WebClient 是 Spring Framework 中的核心组件,与云计算服务商无直接关联,因此在这里没有腾讯云的相关产品推荐。

更多关于 Spring WebClient 的详细信息和使用示例,请参考官方文档:Spring WebClient

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Spring Boot 2.0-WebFlux framework

    例如,HTTP连接太慢时,从数据库延伸到HTTP响应反应组件流水线、数据存储库也可以减慢或停止,直到网络容量释放。 响应式编程也导致从命令式到声明异步组合逻辑重大转变。...例如,这是如何将请求体提取 Mono : Mono string = request.bodyToMono(String.class); 这里是如何将身体提取 Flux ,其中 Person 是可以从...由于它是不可变,您可以使用构建器创建一个 ServerResponse 。构建器允许您设置响应状态,添加响应标题并提供正文。...例如,这是如何使用200 OK状态创建响应,JSON内容类型和正文: Mono person = ......使用像 Flux 或 Observable 这样流类型时,请求/响应或映射/路由级别中指定媒体类型用于确定数据应如何序列化和刷新。

    3.1K50

    Spring WebClient vs RestTemplate——比较和特点

    介绍 Spring 5 引入了一个名为 WebClient 新反应式 Web 客户端。在这篇文章中,我将展示何时以及如何使用 Spring WebClient 与 RestTemplate。...方法通常会获取响应以及状态和标头。...如何Spring Boot 应用程序中使用 WebClient 示例 我们可以结合 Spring Web MVC 和 Spring WebFlux 功能。在本节中,我将创建一个示例应用程序。...由于我们要获取多个用户,因此我们使用是 flux。 这表明我们可以使用响应式、非阻塞 WebClient,它是 Spring Web MVC 框架中 WebFlux 一部分。...结论 在这篇文章中,我展示了什么是 Spring WebClient,我们如何使用 Spring WebClient 与 RestTemplate,以及它提供不同功能。

    88110

    修复 Spring Cloud Gateway 项目中无法通过 Skywalking 追踪 WebClient 调用问题

    解决 Spring Cloud Gateway 项目中无法追踪 WebClient 调用问题 问题描述 Skywalking 通过 java agent 方式 java 应用带来无侵入分布式链路采集...Skywalking Jave Agent 采集链路信息原理 排查问题之前, 先了解下 Skywalking Jave Agent 是如何采集链路信息。...单进程内异步调用 trace 状态维护 使用 Spring WebFlux 或 Vert.x 等异步框架时, 一次调用事务逻辑可能调度在不同线程中。...在实现异步框架插件时, 创建第一个 Span 后, 需要使用 ContextManager.capture() 获取到 ContextSnapshot, 并放置到异步框架本身上下文来传递。...跨进程调用 trace 状态传递 Skywalking 根据不同网络协议或框架(比如 Http Header 或 Kafka Message Header), 来传递链路上下文。

    7.5K40

    格力与奥克斯空调在京东选购指数(java爬虫案例-代码实现)

    jd页面数据绝大多数是通过Ajax请求获取,我用浏览器调试工具(F12),发现这些Ajax很复杂,多层调用,并且关键数据做了些混淆,就是直接去请求Ajax链接返回数据还需要通过特定JS处理,得到原有数据...Boot+Spring Data JPA和定时任务进行开发,HtmlUnit获取动态网页,Jsoup解析页面。...webClient = new WebClient(BrowserVersion.CHROME);//新建一个模拟谷歌Chrome浏览器浏览器客户端对象 webClient.getOptions...().setThrowExceptionOnScriptError(false);//JS执行出错时候是否抛出异常, 这里选择不需要 webClient.getOptions().setThrowExceptionOnFailingStatusCode...(false);//HTTP状态非200时是否抛出异常, 这里选择不需要 webClient.getOptions().setActiveXNative(false);

    2.8K20

    实现异步客户端封装配置管理意义与设计

    本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 为何需要封装异步 HTTP 客户端 WebClient 对于同步请求,我们使用 spring-cloud-openfeign...对于异步请求,使用是异步 Http 客户端即 WebClient。...要实现配置设计以及使用举例 首先,我们要实现 WebClient,其 Filter 包含三个: 重试 Filter:重试 Filter 要在负载均衡 Filter 之前,因为重试时候,我们会从负载均衡器获取另一个实例进行重试...需要重试场景: 非 2xx 响应返回,并且方法是可以重试方法。如何定义方法是可以重试,首先 GET 方法是可以重试,对于其他方法,根据配置中是否配置了这个 URL 可以重试决定。...响应超时异常:这个重试逻辑和非 2xx 响应返回一样。

    97120

    精讲响应式WebClient第2篇-GET请求阻塞与非阻塞调用方法详解

    本文是精讲响应式WebClient第2篇,前篇blog访问地址如下: 精讲响应式webclient第1篇-响应式非阻塞IO与基础用法 在上一篇文章大家介绍了响应式IO模型和WebClient基本用法...本节来继续深入大家介绍:如何使用WebClient作为Http客户端发送GET请求与进行响应结果接收。...一、block()阻塞式获取响应结果 WebClient客户端既支持同步异步、阻塞与非阻塞IO,我们先来大家介绍一下同步阻塞式编程方式。...如果我们想获取HTTP报文中状态、headers、cookies等信息,需要使用exchange()方法。...(); // 获取响应状态 ClientResponse.Headers headers = response.headers(); // 获取响应头 // 获取响应体 Mono<PostDTO

    3K21

    艿艿连肝了几个周末,写了一篇贼长 Spring 响应式 Web 框架 WebFlux!市面第二完整~

    这样,我们就需要有统一返回结果,而不能是每个接口自己定义自己风格。一般来说,统一全局返回信息如下: 成功时,返回成功状态 + 数据。 失败时,返回失败状态 + 错误提示。...在标准 RESTful API 定义,是推荐使用 HTTP 响应状态 返回状态。一般来说,我们实践很少这么去做,主要有如下原因: 业务返回错误状态很多,HTTP 响应状态无法很好映射。...国内开发者对 HTTP 响应状态不是很了解,可能只知道 200、403、404、500 几种常见。这样,反倒增加学习成本。...这个看每个团队习惯吧。艿艿的话,还是偏好基于约定,返回 0 时表示成功。 成功时,状态 0 。 失败时,对应业务错误码。 data:数据。成功时,返回该字段。 message:错误提示。...方法,拦截处理 Exception 异常,构建出错误码 ServiceExceptionEnum.SYS_ERROR CommonResult 对象返回。

    5.9K12

    精讲响应式webclient第1篇-响应式非阻塞IO与基础用法

    笔者在之前已经写了一系列关于RestTemplate文章,如下: 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用 精讲RestTemplate第2篇-多种底层HTTP...根据Spring官方文档及源码中介绍,RestTemplate在将来版本中它可能会被弃用, 作为替代,Spring官方已在Spring 5中引入了WebClient作为非阻塞式Reactive HTTP...如下图:一个请求占用一个线程,线程池内线程都被占用后新来请求就只能等待。...二、WebClient 优势 上文大家介绍完IO模型之后,我想大家已经可以明白了。...请求设置Headers请求头 defaultCookie: HTTP请求设置Cookies defaultRequest: 自定义Http Request filter: HTTP请求增加客户端过滤器

    2.4K41

    程序员如果都懂SpringWebFlux框架的话,也不用天天CRUD了

    然后,定义UserController类,它是具体Spring MVC控制器, 使用UserService获取数据,代码如下。...对于HTTP请求是如何从Web引擎映射到具体实现方法,下一节我们会继续介绍WebFlux逻辑处理架构和HTTP请求路由映射过程。...WebClient开发 WebClient是从Spring WebFlux 5.0开始提供一个非阻塞、基于响应式编程范式HTTP请求客户端工具。...● clientConnector:设置HTTP客户端。 WebClient响应解析 WebClient使用retrieve()方法作为获取HTTP响应最简单方法。...当然也可以将编码后JSON对象直接传递给WebClient,需要在HTTP头信息中指定ContentTypeapplication/json,也可以加上charset编码。

    2.1K20

    一步一步教会你如何使用Java构建单点登录

    在本文中,我将向您展示如何使用Okta和Spring Boot通过两个客户端应用程序和一个资源服务器来实现单点登录。...一步一步教会你如何使用Java构建单点登录" /> 这会将策略绑定到您OIDC应用程序。接下来,点击添加规则。设置OIDC App 2规则名称字段。取消选择除“ 授权”之外所有授权类型。...每个get端点都使用@PreAuthorize注释来告诉系统调用应用程序必须具有指定特定范围才能被授权。例如,如果/userEmail端点在没有email作用域情况下被调用,它将抛出错误。...测试范围授权最后,您将测试资源服务器如何处理每个应用程序授权。打开一个新隐身浏览器窗口,然后输入URL http://localhost:8080。...您转到此页面时,您会注意到您没有看到有关无法访问该电子邮件消息。相反,您会在配置文件信息中看到该电子邮件。

    3.6K30
    领券