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

原文地址:https://www.cnblogs.com/jiang27/p/10623224.html

时间: 2024-10-12 21:42:53

RestTemplate请求出现401错误的相关文章

python接口测试之401错误的分析和解决(十六)

作者 无涯 在接口的测试中,经常会遇到客户端向服务端发送一个请求,服务端返回401的错误,那么今天本文章就来说明在接口测试中如何分析以及解决该问题. 我们知道在HTTP返回的状态码中,401错误表示的是被请求的页面需要用户名和密码.401的错误详细的可以描述为:客户端发送请求抖到服务端, 页面需要验证服务端会返回401的错误,见如下的错误信息: 401 UNAUTHORIZED Headers Content-Type: application/jsonWWW-Authenticate: Bas

HTTP 401错误

HTTP 401 错误 - 未授权 (Unauthorized) 介绍 您的Web服务器认为,客户端(例如您的浏览器或我们的 CheckUpDown 机器人)发送的 HTTP 数据流是正确的,但进入网址 (URL) 资源 , 需要用户身份验证 , 而相关信息 1 )尚未被提供, 或 2 )已提供但没有通过授权测试.这就是通常所知的“ HTTP 基本验证 ”. 需客户端提供的验证请求在 HTTP 协议中被定义为 WWW – 验证标头字段 (WWW-Authenticate header field

F5 iRules-----http请求400/500错误时,重置

#  400/500错误重试 # #当服务返回400/500状态且当前pool中有存活的node重置http请求,并重新选择pool中的node. #直到返回正常代码或者轮询完所有存活node后,接受新的http请求 when CLIENT_ACCEPTED { set retry 0 } when HTTP_REQUEST { set http_request [HTTP::request] } when HTTP_RESPONSE { if { ([HTTP::status] starts_

(微信API接口开发) 使用HttpWebRequest进行请求时发生错误:基础连接已关闭,发送时发生错误处理

最近调试原来的微信模拟登陆时发生了"基础连接已关闭,发送时发生错误"的错误提示,原来都是好好的,只是很久没用了. 出错代码如下: ? 1 2 3 4 5 6 7 HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("https://mp.weixin.qq.com/cgi-bin/loginpage?t=wxm2-login&lang=zh_CN");///cgi-bin/loginpage?

无法完成你的itunes store 请求发生未知错误50

装上itunes登陆itunes store时遂发现"无法完成您的itunes store的请求,发生未知错误(-50)"跃入眼帘,卸载重装数次还是不见效果,难道是WIN7和itunes貌合神离?心有不甘,遂上网查询.为使遇到同样问题的朋友少走弯路,遂将方法心得转载如下,希望对大家有所帮助: 方法一:貌似是被提到得最多的,转自freshertouch 童鞋.1. 关掉itunes.2. 找到 C:\Users\Administrator\AppData\Local\Apple Comp

SpringMVC的AJAX请求报406错误

SpringMVC的AJAX请求报406错误原因有两种:1.jackson包没有引入 2.如果已经引入jackson包了还报406的错误,那么就有可能是请求的url路径是.html结尾,但是返回的数据是一个对象,这时浏览器就不知道怎么响应了,因为一般请求.html后缀的页面,返回的一般是个字符串或者页面内容,此时可以在web.xml中再配置一个拦截后缀,如*.action,web.xml可以有多个拦截后缀,请求.action的后缀,浏览器就没有这个限制了

wcf 服务器无法处理请求由于内部错误

The server was unable to process the request due to an internal error.  For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on t

maven setting.xml 存放位置导致deply失败,显示没有权限401错误

settings.xml存在于两个地方: 1.安装的地方:$M2_HOME/conf/settings.xml 2.用户的目录:${user.home}/.m2/settings.xml 我只在maven的 config 文件夹下存放了,但没有在用户目录存放, deploy显示401错误,显示为没有权限. 网络查找说用户名帐号没有与pom的server对应上. 后来进行细细排查,是对应上的. 后来拷过去后用户目录,deploy成功.

ajax请求出现400错误

ajax请求出现400错误,如题.百度了只有两种情况,一个参数错误,二是所谓的参数过长. 因为我传递的base64的图片参数,很长.刚开始以为是这个原因.后来发现不是,原因是参数错误.freemaker模板的long类型参数没有进行转换,以至于前端取值时,中间有逗号. 所以,遇到此问题时首要是看你 的参数. 原文地址:https://www.cnblogs.com/zeussbook/p/9828765.html