RestTemplate請求出現401錯誤
阿新 • • 發佈:2019-03-29
rri 抓包 發現 異常 自動 postman bsp 執行 出現
最近遇到一個請求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錯誤