当前位置:   article > 正文

使用RestTemplate请求报出HttpClientErrorException异常并获取不到返回body数据

httpclienterrorexception

使用 RestTemplate发送请求的时候,请求接口 报错
HttpClientErrorException$Unauthorized: 401 Unauthorized: [no body] 或者
HttpClientErrorException$BadRequest: 400 Bad Request
那么这个请求拿不到响应码 400或者401
那么是什么原因呢?debug源码发现报错时候会执行到红色框内代码,

这是调用的DefaultResponseErrorHandler类的方法

直接跑出了异常,导致根本拿不到状态码或者是响应体;

那么如果想拿到响应体或者不抛异常就要重写DefaultResponseErrorHandler类的

public void handleError(ClientHttpResponse response)方法即可,示例如下:
  1. RestTemplate restTemplate = new RestTemplate();
  2. restTemplate.setErrorHandler(new DefaultResponseErrorHandler(){
  3. @Override
  4. public void handleError(ClientHttpResponse clientHttpResponse) throws IOException {
  5. //只要重写此方法,不去抛出HttpClientErrorException异常即可
  6. HttpStatus statusCode = clientHttpResponse.getStatusCode();
  7. System.out.println("错误码 = "+statusCode);
  8. }
  9. });

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号