RestTemplate请求出现401错误

Posted jiang27

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RestTemplate请求出现401错误相关的知识,希望对你有一定的参考价值。

  最近遇到一个请求API接口总是报401 Unauthorized错误,起初是认为这个是平台返回的,后来用Postman请求,发现平台其实返回的是一串json,里面带有一些权限验证失败的消息,但到我们代码里请求就自动变成401 Unauthorized错误。用抓包工具抓取代码请求的平台返回数据,和用postman请求结果一致,都是有数据返回,但为什么到我们代码里就会变成401 Unauthorized呢?

  在网上查了一些资料后,对方平台在鉴权失败后返回在http头里标注了权限验证失败信息和401状态码,同时将错误消息也返回在body里。但到RestTemplate后,检测到401异常,直接抛出异常,导致外部接收不到body信息。

  解决方案:

  在RestTemplate 执行请求之前,加上下面这句话就可以实现忽略401错误。

1  restTemplate.setErrorHandler(new DefaultResponseErrorHandler(){
2       @Override
3       public void handleError(ClientHttpResponse response) throws IOException{
4         if(response.getRawStatusCode() != 401){
5            super.handleError(response);
6         }
7       }
8  });

参考文章:https://blog.csdn.net/achang07/article/details/80549741

 

以上是关于RestTemplate请求出现401错误的主要内容,如果未能解决你的问题,请参考以下文章

执行带有axios的GET请求时出现401错误

C#使用HttpWebRequest请求url出现远程服务器返回一个错误:401未经授权

带有 basicauth 的 Ajax CORS 请求在浏览器上出现 401 错误

春季启动:RestTemplate postForObject 400 错误请求

400错误代码,当使用RestTemplate进行Rest API时。

为啥我的 CORS 请求因 http 401 错误而失败