springboot使用RestTemplate返回401时 HttpClientErrorException报错问题及解决方法

时间:2024-04-13 21:07:01

今天需要调用第三方平台rest接口,调用正常时没啥事,调用异常时比如401 时,发现后台解析response就报错HttpClientErrorException,body为null取不到。

springboot使用RestTemplate返回401时 HttpClientErrorException报错问题及解决方法

springboot使用RestTemplate返回401时 HttpClientErrorException报错问题及解决方法 

各种百度及官方文档,发现是resttemplat处理机制的问题,

1、对于非2xx的,4xx  和 5xx  都进行了当做错误来处理。可以去看官方文档。这就要求添加try  catche进行特殊处理。

2、使用resttemplate 前设置下requestfactory ,这样才能接收到body的值  。

restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());

网上,解决方法很多,一类是catch后特殊处理,一类是采用重写错误捕获的方法,忽略掉4xx之类的处理方式,使之原样返回。

我使用的catch 特殊处理的方式,解决的此问题。

springboot使用RestTemplate返回401时 HttpClientErrorException报错问题及解决方法

 

修改后的代码如上图就是添加了1、2。两个地方是的问题第一解决。

springboot使用RestTemplate返回401时 HttpClientErrorException报错问题及解决方法

 

好了,问题解决,皆大欢喜!继续撸码!