赞
踩
使用 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);
- }
- });
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。