最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

RestTemplate設置超時時間及返回狀態(tài)碼非200處理

 更新時間:2022年06月08日 09:09:51   作者:艾米莉Emily  
這篇文章主要為大家介紹了RestTemplate設置超時時間及返回狀態(tài)碼非200處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

默認情況下使用RestTemplate如果返回結果的狀態(tài)碼是200的話就正常處理,否則都會拋出異常;

1.調試postForEntity請求

調試postForEntity請求的方法找到判斷響應結果狀態(tài)碼的方法是org.springframework.web.client.DefaultResponseErrorHandler類中的hasError方法

	@Override
	public boolean hasError(ClientHttpResponse response) throws IOException {
		int rawStatusCode = response.getRawStatusCode();
		HttpStatus statusCode = HttpStatus.resolve(rawStatusCode);
		return (statusCode != null ? hasError(statusCode) : hasError(rawStatusCode));
	}

代碼再往上跟蹤一級,如下:

	protected void handleResponse(URI url, HttpMethod method, ClientHttpResponse response) throws IOException {
		ResponseErrorHandler errorHandler = getErrorHandler();
		boolean hasError = errorHandler.hasError(response);
		if (logger.isDebugEnabled()) {
			try {
				int code = response.getRawStatusCode();
				HttpStatus status = HttpStatus.resolve(code);
				logger.debug("Response " + (status != null ? status : code));
			}
			catch (IOException ex) {
				// ignore
			}
		}
		if (hasError) {
			errorHandler.handleError(url, method, response);
		}
	}

從上面的代碼可以看到是使用了RestTemplate的錯誤處理器,所以我們就可以想辦法自定義錯誤處理器;

    @Bean
    public RestTemplate restTemplate(ClientHttpRequestFactory factory){
        RestTemplate restTemplate = new RestTemplate(factory);
        ResponseErrorHandler responseErrorHandler = new ResponseErrorHandler() {
            @Override
            public boolean hasError(ClientHttpResponse response) throws IOException {
                return true;
            }
            @Override
            public void handleError(ClientHttpResponse response) throws IOException {
            }
        };
        restTemplate.setErrorHandler(responseErrorHandler);
        return restTemplate;
    }zhi

只需要將hasError方法的返回值更改為true就可以了,以后不管狀態(tài)碼是200還是其它的都會返回結果;

2.設置超時時間

RestTemplate默認使用的是SimpleClientHttpRequestFactory工廠方法,看下它的超時時間是:

	private int connectTimeout = -1;
	private int readTimeout = -1;

默認值都是-1,也就是沒有超時時間;

其底層是使用URLConnection,而URLConnection實際上時封裝了Socket,Socket我們知道是沒有超時時間限制的,所以我們必須設置超時時間,否則如果請求的URL一直卡死程序將會不可以運行下去;

    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        //讀取超時5秒,默認無限限制,單位:毫秒
        factory.setReadTimeout(5000);
        //連接超時10秒,默認無限制,單位:毫秒
        factory.setConnectTimeout(10000);
        return factory;
    }

以上就是RestTemplate設置超時時間及返回狀態(tài)碼非200處理的詳細內容,更多關于RestTemplate超時設置非200處理的資料請關注腳本之家其它相關文章!

相關文章

  • 多線程-lock與lockInterruptibly的區(qū)別及說明

    多線程-lock與lockInterruptibly的區(qū)別及說明

    文章主要討論了Java中ReentrantLock的lock和lockInterruptibly方法的區(qū)別,以及AQS中的雙向鏈表設計,lock方法不響應中斷,而lockInterruptibly方法會響應中斷,AQS的雙向鏈表設計使得線程管理更加高效和靈活,適用于高并發(fā)場景
    2025-02-02
  • SpringBoot整合SSO(single sign on)單點登錄

    SpringBoot整合SSO(single sign on)單點登錄

    這篇文章主要介紹了SpringBoot整合SSO(single sign on)單點登錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Springboot+Poi導入Excel表格實現過程詳解

    Springboot+Poi導入Excel表格實現過程詳解

    這篇文章主要介紹了Springboot+Poi導入Excel表格實現過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Springboot系列之kafka操作使用詳解

    Springboot系列之kafka操作使用詳解

    這篇文章主要為大家介紹了Springboot系列之kafka操作使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • 如何徹底刪除SVN中的文件和文件夾(附恢復方法)

    如何徹底刪除SVN中的文件和文件夾(附恢復方法)

    在SVN中如果刪除某個文件或文件夾也可以在歷史記錄中進行找回,有的時候需要徹底刪除某些文件,即不希望通過歷史記錄進行恢復,需要在服務器上對SVN的數據進行重新整理
    2014-08-08
  • 高分面試分析jvm如何實現多態(tài)

    高分面試分析jvm如何實現多態(tài)

    這篇文章主要介紹了講解了在面試中jvm如何實現多態(tài),怎樣回答才能得到高分的問題分析,有需要的朋友可以借鑒參考下,祝大家早日升職加薪多多進步
    2022-01-01
  • SpringBoot bean的多種加載方式示例詳解

    SpringBoot bean的多種加載方式示例詳解

    本文詳細介紹了在SpringBoot中加載Bean的多種方式,包括通過xml配置文件、注解定義、特殊方式如FactoryBean、@ImportResource、ApplicationContext以及使用@Import注解導入bean的方法,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • 實例詳解Java調用第三方接口方法

    實例詳解Java調用第三方接口方法

    很多項目都會封裝規(guī)定好本身項目的接口規(guī)范,所以大多數需要去調用對方提供的接口或第三方接口(短信、天氣等),下面這篇文章主要給大家介紹了關于Java調用第三方接口方法的相關資料,需要的朋友可以參考下
    2022-06-06
  • Java后端向前端返回文件流實現下載功能的方法

    Java后端向前端返回文件流實現下載功能的方法

    這篇文章主要給大家介紹了關于Java后端向前端返回文件流實現下載功能的相關資料,Java后端可以通過調用接口返回文件流來實現文件傳輸功能,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • 解決SpringBoot掃描不到公共類的實體問題

    解決SpringBoot掃描不到公共類的實體問題

    這篇文章主要介紹了解決SpringBoot掃描不到公共類的實體問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08

最新評論

古蔺县| 建宁县| 桦川县| 蒙阴县| 辽阳县| 会昌县| 鹤岗市| 乌拉特中旗| 永德县| 团风县| 金门县| 唐山市| 广东省| 湄潭县| 郯城县| 玛沁县| 汾西县| 木兰县| 合川市| 广灵县| 定日县| 彭阳县| 北碚区| 贺州市| 岚皋县| 那坡县| 西乌珠穆沁旗| 大安市| 南昌县| 天门市| 宜宾市| 桦川县| 溧阳市| 若羌县| 油尖旺区| 固安县| 休宁县| 思茅市| 绥阳县| 武功县| 瑞安市|