RestTemplate处理请求状态码为非200的返回数据

本文介绍了如何使用Spring Boot的RestTemplate处理非200状态码的响应。默认情况下,RestTemplate遇到非200状态码会抛出异常。通过自定义ResponseErrorHandler并覆盖hasError方法,始终返回true,可以避免异常并继续处理结果数据。示例代码展示了具体的配置和使用方法。
摘要由CSDN通过智能技术生成

一、RestTemplate实践

RestTemplate是Spring提供的用于访问Rest服务的客户端,

RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。

调用RestTemplate的默认构造函数,RestTemplate对象在底层通过使用java.net包下的实现创建HTTP 请求,

可以通过使用ClientHttpRequestFactory指定不同的HTTP请求方式。

ClientHttpRequestFactory接口主要提供了两种实现方式

1、一种是SimpleClientHttpRequestFactory,使用J2SE提供的方式(既java.net包提供的方式)创建底层的Http请求连接。

2、一种方式是使用HttpComponentsClientHttpRequestFactory方式,底层使用HttpClient访问远程的Http服务,使用HttpClient可以配置连接池和证书等信息。

二、默认的 RestTemplate 有个机制是请求状态码非200 就抛出异常,会中断接下来的操作。如果不想中断对结果数据得解析,可以通过覆盖默认的 ResponseErrorHandler ,见下面的示例,示例中的方法中基本都是空方法,只要对hasError修改下,让他一直返回true,即是不检查状态码及抛异常了。

package com.example.demo.web.config;

import java.io.IOException;

import org.springframework.context.annotation.Bean;
import org.springframework.con

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
`RestTemplate`是Spring框架提供的一个用于同步客户端HTTP请求的类,它简化了与HTTP服务器交互的过程。通过使用`RestTemplate`,开发者可以发送各种HTTP请求(如GET、POST、PUT、DELETE等)并且处理响应结果。 转发请求通常指的是将一个请求从一个服务转发到另一个服务,这在微服务架构中常常见,其中服务之间需要进行通信。使用`RestTemplate`可以实现这种转发,以下是一个简单的例子: ```java // 创建RestTemplate实例 RestTemplate restTemplate = new RestTemplate(); // 需要转发的请求的URL String targetUrl = "http://localhost:8081/targetService"; // 创建一个请求对象,例如使用GET请求 HttpEntity<String> requestEntity = new HttpEntity<>("body"); // 发送GET请求 ResponseEntity<String> responseEntity = restTemplate.exchange( targetUrl, HttpMethod.GET, requestEntity, String.class); // 处理响应 String response = responseEntity.getBody(); ``` 在这个例子中,`RestTemplate.exchange`方法用于发送请求,并且可以指定请求方法和期望的响应类型。这个方法会同步等待服务端响应,并返回一个`ResponseEntity`对象,你可以从中获取响应体和状态码等信息。 `RestTemplate`还支持其他一些特性,比如: - 使用`@RequestBody`注解发送JSON数据。 - 使用`ResponseEntity`处理响应状态码。 - 自定义HTTP请求头信息。 - 使用拦截器进行请求和响应的拦截处理
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值