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

这是调用的DefaultResponseErrorHandler类的方法

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

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

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

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐