RestTemplate 使用中,異常報錯處理
使用RestTemplate過程中, 如果介面返回的不是200狀態,則會丟擲異常報錯。但在實際介面對接中,可能希望獲取介面返回的異常資訊做返回。因此可以自定義RestTemplate異常的處理:
實現方式:
建立一個自己的ExceptionHandler類,實現ResponseErrorHandler介面,程式碼:
package com.walletServer.config; import java.io.IOException; import org.springframework.http.client.ClientHttpResponse; import org.springframework.web.client.ResponseErrorHandler; public class ThrowErrorHandler implements ResponseErrorHandler { @Override public boolean hasError(ClientHttpResponse response) throws IOException { // 返回false表示不管response的status是多少都返回沒有錯 // 這裡可以自己定義那些status code你認為是可以拋Error return false; } @Override public void handleError(ClientHttpResponse response) throws IOException { // 這裡面可以實現你自己遇到了Error進行合理的處理 } }
在Application配置裡面定義RestTemplate時,指定異常 控制器為此控制器:
@Bean public RestTemplate restTemplate(ClientHttpRequestFactory factory) { RestTemplate restTemplate=new RestTemplate(factory); //Response status code 4XX or 5XX to the client. restTemplate.setErrorHandler(new ThrowErrorHandler()); return restTemplate; }
然後使用RestTemplate時,可以根據返回狀態做判斷:
/** * 請求Tos節點服務 * @param reqVO * @return */ private JSONObject requestTos(JSONObject reqVO, String getAuthorization) { // Authorization傳遞 headers.add(HttpHeaders.AUTHORIZATION, getAuthorization); HttpEntity<Object> entity = new HttpEntity<>(reqVO, headers); log.info("------------------TosUtils.requestTos() -start, url=" + baseUrl + ", param=" + reqVO); ResponseEntity<String> responseEntity = restTemplate.postForEntity(baseUrl, entity, String.class); log.info("------------------TosUtils.requestTos() -end, result=" + responseEntity); if (!responseEntity.getStatusCode().is2xxSuccessful()) { log.info("------------------TosUtils.requestTos() -errorBody: {}", responseEntity.getBody()); throw new RestClientException(responseEntity.getBody()); } JSONObject resultJson = JSON.parseObject(responseEntity.getBody()); return resultJson; }
相關推薦
RestTemplate 使用中,異常報錯處理
使用RestTemplate過程中, 如果介面返回的不是200狀態,則會丟擲異常報錯。但在實際介面對接中,可能希望獲取介面返回的異常資訊做返回。因此可以自定義RestTemplate異常的處理: 實現方式: 建立一個自己的ExceptionHandler類,實現Res
Oracle11g靜默安裝dbca,netca報錯處理--直接跟換操作系統
update npr 處理 grep gist net flags button been 最近給一個客戶安裝oracle 11gr2 概述: 操作系統:linux 32位操作系統 [oracle@nbsrfx response]$ uname -aLinux nb
python異常報錯處理
1.使用try...except捕捉異常 try: s=1/0 except IndexError: print ('except') except KeyError: print ('Keyerror') except ZeroDivisionError: print ('Z
time.strftime:格式化字符串中含中文報錯處理
port 格式化輸出 cal 結果 報錯 hour error dst ror import time print(time.strftime("%Y年%m月%d日 %H時%M分%S秒",time.localtime())) 報錯: UnicodeEncodeErro
CentOS7安裝過程中,磁盤大於2T的報錯處理
系統問題描述 服務器磁盤單盤空間大於2TB,在安裝CentOS7時出現下圖報錯: Boot failure.Reboot and Select proper Boot device... 問題原因: 安裝CentOS 7時,如果硬盤容量小於2TB,系統默認會使用MBR格式來安裝。如果大於2TB則需要使
在flask框架中,對wtforms的SelectMultipleField的一個報錯處理
pre inf req ESS multi bmi 其中 ews IT 先粘貼代碼: form.py文件: users = SelectMultipleField( label="請選擇用戶", validators=[ DataRequired(
vue 前端對null的處理,專案中使用v-if判斷陣列長度是,length報錯?
說明:以前做伺服器開發的時候,前端人員總是說,不要傳null過來,不要傳null過來,傳“”空字串過來都可以。當時就想,為啥不能傳null,你前端做下判斷不就行了嗎。 沒想到現在自己既開發前端,又開發後臺,就遇到了這個問題。 其實真的就是坐下 !=null就可以了。 例子: &nbs
mysql儲存emoji表情報錯處理,qq互聯mysql儲存暱稱中帶表情的資料時報錯。
前言 做qq互聯登入時發現一個問題,如果qq暱稱中有表情時存入mysql資料庫會報錯。 java.sql.SQLException: Incorrect string value: "ð" for colum n "name" at row 1 a
linq中日期格式轉換或者比較,程序報錯說不支持方法的解決辦法
格式 var lec fun edi nbsp diff sql 方法 public void TestMethod1(){using (var _context = new hotelEntities()){var rq = DateTime.Now.Date;var q
VBA在32位下沒問題,到64位異常報錯
隱式 ati else 但是 設置 判斷代碼 報錯 重要 位或 64 位 Visual Basic for Applications 概述Microsoft Visual Basic for Applications (VBA) 是 Microsoft Office 附帶的
Hibernate卡住,然後報錯java.sql.SQLException: Unknown system variable 'language'異常
ops environ instance bcf end int strong roo variables 啟動應用的時候會卡在: 08:22:58,221 DEBUG IntegratorServiceImpl:46 - Adding Integrator [org.hi
IDEA中 Spark 讀Hbase 報錯處理:
ado htable client ets rim ogg expec zookeep ati SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] 17/11/19 14:25:57 E
MyBatis中sqlSession操作數據庫,不報錯但無法實現數據修改(增、改、刪)
修改 () brush light pub clas java bat job public void addCustomerTest() throws Exception { SqlSession sqlSession = MyBatisUtils.ge
【微信】微信小程序 微信開發工具中新創建的json文件,編譯報錯VM1781:2 pages/module/module.json 文件解析錯誤 SyntaxError: Unexpected end of JSON input
page class 報錯 技術分享 微信開發 圖片 alt http ges 如果新創建報錯:編譯報錯VM1781:2 pages/module/module.json 文件解析錯誤 SyntaxError: Unexpected end of JSON input
CSDN程式碼內容複製後在程式中格式報錯處理方法
很多人遇到程式程式碼複製後格式問題報錯後,往往都是直接一行一行的調節格式內容,可能程式碼量不多,一般花費10-40分鐘都可以調節過來,但其實不需要這麼麻煩,可以總結一些簡單的方法: 1、拷貝程式程式碼 2、程式設計軟體中整體報錯
2018年10月8日django檢視版本命令,python2&3中print區別,iterable報錯,SSH,pycharm/ubuntu顏色設定
檢視Django版本的命令: 1. 在終端中輸入: python -m django –-version 2. 進入python互動環境: import django &nb
藍鯨平臺本地上傳大檔案ERR_CONNECTION_RESE報錯處理client intended to send too large body:,server: paas.blueking.com
[[email protected] etc]# pwd /data/bkce/etc [[email protected] etc]# vim nginx.conf [[email protected] nginx]# pw
curl: (35) SSL connect error報錯處理,更新nss版本;Linux版本centos7下載樹
處理 請求命令 curl -O https:// xxx 時候,報錯curl: (35) SSL connect error 原因是nss版本有點舊了,yum -y update nss更新一下 Linux7下載樹地址: http://mirrors.163.com/centos
Python中安裝bs4後,pycharm報錯ModuleNotFoundError: No module named 'bs4'
本文主要分享關於在對應python版本中安裝beautifulsoup之後,在程式碼執行時還會提示“No module named 'bs4'”的問題。 首先需要檢查一下,自己安裝beautifulsoup的版本與用來執行程式碼的python版本是不是一致的,為了防止出問題,我將python2與
微信開發者工具初始化專案時,進去報錯:小程式重啟耗時過久,請確認業務邏輯中是否有複雜運算,或者死迴圈
如圖上,為錯誤原因。 之前用開發者工具用的好好地,前些日子又版本更新,升級了一下,然後開啟專案就出現上面的問題。當時以為電腦出啥問題了,也沒當回事。今天再次開啟開發者工具,發現還是出現上面的問題。一臉懵,新建專案,啥都沒做竟然出問題。網上一查同樣的問題一大堆。