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

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

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

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

1.調(diào)試postForEntity請(qǐng)求

調(diào)試postForEntity請(qǐng)求的方法找到判斷響應(yīng)結(jié)果狀態(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));
	}

代碼再往上跟蹤一級(jí),如下:

	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的錯(cuò)誤處理器,所以我們就可以想辦法自定義錯(cuò)誤處理器;

    @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還是其它的都會(huì)返回結(jié)果;

2.設(shè)置超時(shí)時(shí)間

RestTemplate默認(rèn)使用的是SimpleClientHttpRequestFactory工廠方法,看下它的超時(shí)時(shí)間是:

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

默認(rèn)值都是-1,也就是沒有超時(shí)時(shí)間;

其底層是使用URLConnection,而URLConnection實(shí)際上時(shí)封裝了Socket,Socket我們知道是沒有超時(shí)時(shí)間限制的,所以我們必須設(shè)置超時(shí)時(shí)間,否則如果請(qǐng)求的URL一直卡死程序?qū)?huì)不可以運(yùn)行下去;

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

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

相關(guān)文章

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

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

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

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

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

    Springboot+Poi導(dǎo)入Excel表格實(shí)現(xiàn)過程詳解

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

    Springboot系列之kafka操作使用詳解

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

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

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

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

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

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

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

    實(shí)例詳解Java調(diào)用第三方接口方法

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

    Java后端向前端返回文件流實(shí)現(xiàn)下載功能的方法

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

    解決SpringBoot掃描不到公共類的實(shí)體問題

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

最新評(píng)論

镇沅| 遂宁市| 鄂托克旗| 榕江县| 旌德县| 福海县| 定州市| 中宁县| 德保县| 商城县| 汶上县| 南开区| 乌拉特前旗| 峨边| 平邑县| 桦川县| 株洲市| 武平县| 长乐市| 泰兴市| 万荣县| 榕江县| 磐安县| 库车县| 新乐市| 玉门市| 同德县| 黄浦区| 弥渡县| 兴安盟| 雷州市| 奉新县| 宜兰市| 富顺县| 宝应县| 岳阳县| 天等县| 张家港市| 惠州市| 威信县| 新民市|