首页
学习
活动
专区
圈层
工具
发布

SpringWeb 系列教程 RestTemplate 4xx5xx 异常信息捕获

那么 RestTemplate 如果希望可以获取到非 200 状态码返回数据时,可以怎么操作呢? I. 异常捕获 1....问题分析 RestTemplate 的异常处理,是借助org.springframework.web.client.ResponseErrorHandler来做的,先看一下两个核心方法 下面代码来自 spring-web...statusCode.series() == HttpStatus.Series.SERVER_ERROR); } 请注意上面的实现,自定义的某些 http code 是不会被认为是异常的,因为无法转换为对应的...实测 首先写两个结果,返回的 http 状态码非 200;针对返回非 200 状态码的 case,有多种写法,下面演示两种常见的 @RestController public class HelloRest...("http://127.0.0.1:8080/525", String.class); System.out.println(ans); ans = restTemplate.getForEntity

1.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【SpringBoot WEB 系列】RestTemplate 之非 200 状态码信息捕获

    [logo.jpg] 【SpringBoot WEB 系列】RestTemplate 之非 200 状态码信息捕获 前面介绍的 RestTemplate 的使用,都是接口正常返回 200 的状态码 case...,当返回非 200 状态码时,会直接抛异常,如果我希望能捕获异常,并针对正常获取返回的 message,可以如何处理呢?...; } 一个简单的鉴权逻辑如上,从请求头中拿到Authorization对应的 value,并解析用户名密码,如果满足则正确返回;如果不存在 or 不满足,则返回 http 状态码为 401,并携带对应的提示信息...未捕获场景 当我们直接像之前一样使用 RestTemplate 时,看一下效果如何 try { // 如果返回状态码不是200,则直接抛异常,无法拿到responseBody RestTemplate...age=20", String.class); log.info("exception with no auth after errorHandler res: {}", ans); 输出如下, 401 为返回的状态码

    3.4K30

    Java中使用RestTemplate调用api

    更简洁地讲,REST就是将资源的状态以最适合客户端或服务端的形式从服务器端转移到客户 端(或者反过来)。 在REST中,资源通过URL进行识别和定位。...execute() 在URL上执行特定的HTTP方法,返回一个从响应体映射得到的对象 getForEntity() 发送一个HTTP GET请求,返回的ResponseEntity包含了响应体所映射成的对象...getForObject() 发送一个HTTP GET请求,返回的请求体将映射为一个对象 postForEntity() POST 数据到一个URL,返回包含一个对象的ResponseEntity,这个对象是从响应体中映射得到的...Get请求 RestTemplate 的get方法有以上几个,可以分为两类: getForEntity() 和 getForObject() 首先看 getForEntity() 的返回值类型 ResponseEntity...封装了返回的响应信息,包括 响应状态,响应头 和 响应体.

    2.2K10

    【Python】已解决:org.springframework.web.client.HttpServerErrorException: 500

    这种错误表示服务器在处理请求时遇到了意外情况,导致无法完成请求。..."; ResponseEntity response = restTemplate.getForEntity(url, String.class); 当我们运行该代码时,可能会遇到HttpServerErrorException...请求数据问题:客户端发送的请求数据格式错误或不完整,导致服务器无法处理。 网络问题:网络不稳定或网络配置问题导致请求未能正确到达服务器。...,我们不仅捕获了异常,还打印了详细的错误信息,并根据不同的服务器错误状态码进行相应的处理。...健壮性处理:针对不同的HTTP状态码(如4xx、5xx)进行分类处理,提供友好的错误提示和处理方案。

    88910

    Spring Cloud 之 Hystrix.

    () 配置的值;如果这次的依赖调用成功,熔断器状态将变成关闭,后续依赖调用可正常执行。...例如,默认该值为 20 的时候,如果滚动时间窗(默认10秒)内仅收到了19个请求, 即使这19个请求都失败了,断路器也不会打开。...,表示在滚动时间窗中,在请求数量超过 circuitBreaker.requestVolumeThreshold 的情况下,如果错误请求数的百分比超过50, 就把断路器设置为 "打开" 状态,否则就设置为...休眠时间窗结束之后,会将断路器置为 "半开" 状态,尝试熔断的请求命令,如果依然失败就将断路器继续设置为 "打开" 状态,如果成功就设置为 "关闭" 状态。...例如,将该值设置为100, 滚动窗口为10秒,若在10秒内一个 “桶 ”中发生了500次执行, // 那么该 “桶” 中只保留 最后的100次执行的统计。

    71020

    【SpringBoot WEB 系列】RestTemplate 之 Basic Auth 授权

    ; } 一个简单的鉴权逻辑如上,从请求头中拿到Authorization对应的 value,并解析用户名密码,如果满足则正确返回;如果不存在 or 不满足,则返回 http 状态码为 401,并携带对应的提示信息...拦截器方式 上面的方式不太通用,借助前面的请求头设置姿势,如果有通用的需求,借助拦截器是一个好的选择 // 2....标准验证拦截器 上面的拦截器主要还是我们自己来设置请求头,实际上 Spring 已经提供了标准的BasicAuthenticationInterceptor来实现我们的需求 // 3....String.class); log.info("auth by RestTemplateBuilder: {}", ans); 输出 (auth by RestTemplateBuilder: 200...项目&系列博文 博文 【WEB 系列】RestTemplate 之代理访问 【WEB 系列】RestTemplate 之超时设置 【WEB 系列】RestTemplate 之中文乱码问题 fix 【WEB

    5.4K20

    精讲RestTemplate第7篇-自定义请求失败异常处理

    200、而是400、500HTTP状态码),就会抛出如下异常: ?...(); // 获取响应码 System.out.println("HTTP 响应状态:" + statusCode); } 异常抛出之后,程序后面的代码就执行不到了,无法进行后面的代码执行。...handleError用于处理异常响应结果(非200状态码段) DefaultResponseErrorHandler是ResponseErrorHandler的默认实现 所以我们就来看看DefaultResponseErrorHandler...从HttpResponse解析出Http StatusCode,如果状态码StatusCode为null,就抛出UnknownHttpStatusCodeException异常。 ?...如果StatusCode存在,则解析出StatusCode的series,也就是状态码段(除了200段,其他全是异常状态码),解析规则是StatusCode/100取整。

    3.5K31

    Hystrix和Ribbon的整合

    fallbackMethod = "helloFallback") public String hello() { ResponseEntity responseEntity = restTemplate.getForEntity...如果example-service服务不可用,Hystrix将自动调用helloFallback方法,并将其返回值作为服务调用的结果。...value = "10000") }) public String hello() { ResponseEntity responseEntity = restTemplate.getForEntity...,我们在@HystrixCommand注解中指定了服务降级的回退方法helloFallback,并使用commandProperties属性来设置熔断器的相关属性。...具体来说,我们设置了熔断器的请求阈值为4,即当有4个请求失败时,熔断器将被打开;同时我们设置了熔断器的休眠时间为10秒,即当熔断器打开后,它将保持打开状态10秒,然后自动尝试恢复服务调用。

    67230

    Spring Data REST 与 Spring RestTemplate 实战详解

    Spring Data REST 通过构建在 Spring Data Repositories 之上,自动将其导出为 REST 资源的 API,减少了大量重复代码和无聊的样板代码。...(2)默认状态码 对于暴露的资源,我们使用一组默认状态代码: 200 OK:适用于纯粹的 GET 请求。 201 Created:针对创建新资源的 POST 和 PUT 请求。...如果配置值设置为包含 PUT 的响应,则将返回 200 OK 进行更新,PUT 将为 PUT 创建的资源返回 201 Created。...如果配置值(RepositoryRestConfiguration.returnBodyOnUpdate和RepositoryRestConfiguration.returnBodyCreate)显式设置为...PATCH:与 PUT 类似,但部分更新资源状态。 DELETE:删除暴露的资源。 POST:从给定的请求正文创建一个新的实体。

    6.3K50

    Java Response 返回值处理的最佳实践:如何高效获取与操作响应数据

    本期我们将转向另一个常见但复杂的话题:Java中如何处理HTTP请求的Response返回值。...获取响应状态码:调用getResponseCode()获取服务器返回的HTTP状态码(如200、404等)。处理响应体:通过InputStreamReader读取返回的数据流,将其转换为字符串格式。...验证响应状态码:assertEquals(200, response.statusCode());:使用 assertEquals 断言方法验证响应的状态码是否为200(HTTP OK)。...使用 .uri(new URI("https://api.example.com/data")) 设置请求的 URI。使用 .GET() 指定请求方法为 GET。...注意:代码中假设 HttpClient 能够成功连接到 "https://api.example.com/data" 并接收到200状态码和 "application/json" 内容类型的响应。

    2.6K31

    重学springboot系列番外篇之RestTemplate

    一个返回值为void // 使用delete发送DELETE请求,返回值为void restTemplate.delete(url); // 使用exchange发送DELETE请求 ResponseEntity...(); // 获取响应码 System.out.println("HTTP 响应状态:" + statusCode); } 异常抛出之后,程序后面的代码就执行不到了,无法进行后面的代码执行。...如果StatusCode存在,则解析出StatusCode的series,也就是状态码段(除了200段,其他全是异常状态码),解析规则是StatusCode/100取整。...本节为大家介绍另外一种通用的异常的处理机制:那就是自动重试。也就是说,在RestTemplate发送请求得到非200状态结果的时候,间隔一定的时间再次发送n次请求。...,默认为1000毫秒 multiplier:指定延迟的倍数,比如设置delay=5000,multiplier=2时,第一次重试为5秒后,第二次为10(5x2)秒,第三次为20(10x2)秒。

    5.4K22

    网页错误码详细报错

    这个错误代码为 IIS 6.0 所专用。  • 504 - 网关超时。  • 505 - HTTP 版本不受支持。常见的 HTTP 状态代码及其原因  • 200 - 成功。...• 您没有将试图执行的文件类型的脚本映射设置为识别所使用的谓词(例如,GET 或 POST)。...若要验证这一点,请在 MMC 中右击目录,依次单击属性、目录选项卡和配置,然后验证相应文件类型的脚本映射是否设置为允许所使用的谓词。  • 403.2 - 读访问被禁止。...您无法更改此限制。  • 403.12 - 拒绝访问映射表。 您要访问的页面要求提供客户端证书,但映射到您的客户端证书的用户 ID 已被拒绝访问该文件。...FTP1xx - 肯定的初步答复  这些状态代码指示一项操作已经成功开始,但客户端希望在继续操作新命令前得到另一个答复。  • 110 重新启动标记答复。

    8.2K20

    【傻瓜教程】S7-200 SMART与西门子V20系列变频器USS通讯

    选择设定好连接宏为CN010后,设置P0003=3(专家级),修改P2014=0 三、 程序编写 S7-200 SMART USS 标准指令库包括 USS_INIT、USS_CTRL、USS_RPM_X...从站地址映射 在这个 32 位的双字中,每一位的位号表示 USS 从站的地址号;要在网络中激活某地址号的驱动装置,则需要把相应位号的位置设为二进制“1",不需要激活 USS 从站,相应的位设置为”0"...主站从 USS 从站收到有效的数据后,此位将为“1"一个程序扫描周期,表明以下的所有数据都是最新的 Error: 错误代码。0 = 无出错。其他错误代码请参考 Status: 驱动装置的状态字。...禁止状态下驱动装置无法运行。要清除禁止状态,故障位必须复位,并且 RUN, OFF2 和 OFF3 都为 0 Fault: 故障指示位(0 - 无故障,1 - 有故障)。...也可以在编程的稍后阶段分配存储区地址,但这一步是必不可少的,否则程序无法通过编译。 根据 S7-200 SMART中的数据存储区分配原则,分配给库指令的数据区绝对不能与其他程序使用的数据区有任何重叠。

    8.6K21
    领券