VIP免费

RestTemplate状态码为401时,如何获取body信息

精品 RestTemplate401 原创
152
DEMO程序园
程序猿 2022-03-19
积分:0

简介:

当我们与第三方系统交互,通常接口返回数据,有的时候第三方接口再非正常响应结果时,会将返回的具体信息放置body,HTTP状态码为非200,此时restTemplate设置不对会任务此次请求失败,而直接报异常。举例说明: 那么再这种请求下我们如何直接获取到对方的返回body信息呢? 解决办法:importorg.springframework.http.client.ClientHttpResp

当我们与第三方系统交互,通常接口返回数据,有的时候第三方接口再非正常响应结果时,会将返回的具体信息放置body,HTTP状态码为非200,此时restTemplate设置不对会任务此次请求失败,而直接报异常。

举例说明:

那么再这种请求下我们如何直接获取到对方的返回body信息呢?

解决办法:

import org.springframework.http.client.ClientHttpResponse;
import org.springframework.web.client.ResponseErrorHandler;

import java.io.IOException;

/**
* 当服务端自定义400或500错误返回体时,使用restTemplate 请求接收不到消息体。
* restTemplate 默认只会返回状态码为200的消息体,需要重写
* @author dengshiling
*/
public class FacePlusThrowErrorHandler implements ResponseErrorHandler {
   @Override
   public boolean hasError(ClientHttpResponse response) throws IOException {
       return false;
   }

   @Override
   public void handleError(ClientHttpResponse response) throws IOException {

   }
}


 /**
    * restTemplate 针对https  ssl认证
    * 并接收自定义500错误返回体
    * @return
    */
   @Bean(name = "restTemplateForHttpsIgnoreError")
   public RestTemplate newRestTemplateForHttpsIgnoreError() {
       /**jdk自带的实现*/
       RestTemplate restTemplate = new RestTemplate();
       HttpComponentsClientHttpRequestFactory simpleClientHttpRequestFactory = new HttpComponentsClientHttpRequestFactory();
       /**设置连接超时*/
       simpleClientHttpRequestFactory.setConnectTimeout(60000);
       simpleClientHttpRequestFactory.setReadTimeout(60000);
       restTemplate.setRequestFactory(simpleClientHttpRequestFactory);
       restTemplate.setErrorHandler(new FacePlusThrowErrorHandler());
       StringHttpMessageConverter m = new StringHttpMessageConverter(Charset.forName("UTF-8"));
       restTemplate.getMessageConverters().add(m);
       return restTemplate;
   }

在使用的地方注入:

@Autowired
@Qualifier("restTemplateForHttpsIgnoreError")
private RestTemplate restTemplateHttps;



评论
最新发布
2024-03-31
2024-03-31
2024-03-28
2024-03-28
2024-03-25
2024-03-19
2024-03-19
2024-03-13
2024-03-13
2024-03-12
layui

微信扫码关注DEMO程序园公众号

本周热门
1773
1596
1095
1029
1000
989
951
926
654
478
热门下载
27
20
19
14
14
12
12
12
12
11