欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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,也就是沒(méi)有超時(shí)時(shí)間;

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

    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        //讀取超時(shí)5秒,默認(rèn)無(wú)限限制,單位:毫秒
        factory.setReadTimeout(5000);
        //連接超時(shí)10秒,默認(rèn)無(wú)限制,單位:毫秒
        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)文章

  • JAVA 多態(tài)操作----父類與子類轉(zhuǎn)換問(wèn)題實(shí)例分析

    JAVA 多態(tài)操作----父類與子類轉(zhuǎn)換問(wèn)題實(shí)例分析

    這篇文章主要介紹了JAVA 多態(tài)操作----父類與子類轉(zhuǎn)換問(wèn)題,結(jié)合實(shí)例形式分析了JAVA 多態(tài)操作中父類與子類轉(zhuǎn)換問(wèn)題相關(guān)原理、操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • java中注解機(jī)制及其原理的詳解

    java中注解機(jī)制及其原理的詳解

    這篇文章主要介紹了java中注解機(jī)制及其原理的詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • hibernate中HQL如何調(diào)用自定義函數(shù)

    hibernate中HQL如何調(diào)用自定義函數(shù)

    這篇文章主要介紹了hibernate中HQL如何調(diào)用自定義函數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • javaweb實(shí)現(xiàn)文件上傳小功能

    javaweb實(shí)現(xiàn)文件上傳小功能

    這篇文章主要為大家詳細(xì)介紹了javaweb實(shí)現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • SpringBoot+@EnableScheduling使用定時(shí)器的常見(jiàn)案例

    SpringBoot+@EnableScheduling使用定時(shí)器的常見(jiàn)案例

    項(xiàng)目開(kāi)發(fā)中經(jīng)常需要執(zhí)行一些定時(shí)任務(wù),本文主要介紹了SpringBoot+@EnableScheduling使用定時(shí)器的常見(jiàn)案例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • springboot jackson配置教程

    springboot jackson配置教程

    這篇文章主要介紹了springboot jackson配置教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • hadoop的hdfs文件操作實(shí)現(xiàn)上傳文件到hdfs

    hadoop的hdfs文件操作實(shí)現(xiàn)上傳文件到hdfs

    這篇文章主要介紹了使用hadoop的API對(duì)HDFS上的文件訪問(wèn),其中包括上傳文件到HDFS上、從HDFS上下載文件和刪除HDFS上的文件,需要的朋友可以參考下
    2014-03-03
  • Java使用JDBC連接數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法

    Java使用JDBC連接數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法

    這篇文章主要介紹了Java使用JDBC連接數(shù)據(jù)庫(kù)的實(shí)現(xiàn)方法,包括了詳細(xì)的加載步驟以及完整實(shí)現(xiàn)示例,需要的朋友可以參考下
    2014-09-09
  • Mybatis參數(shù)(Parameters)傳遞方式

    Mybatis參數(shù)(Parameters)傳遞方式

    這篇文章主要介紹了Mybatis參數(shù)(Parameters)傳遞方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 詳解Java中String類的各種用法

    詳解Java中String類的各種用法

    Java中定義了String和StringBuffer兩個(gè)類來(lái)封裝對(duì)字符串的各種操作,存放于java.lang包中,是Java語(yǔ)言的核心類,提供了字符串的比較、查找、截取、大小寫(xiě)轉(zhuǎn)換等操作,無(wú)需導(dǎo)入即可直接使用它們。讓我們來(lái)詳細(xì)了解它吧
    2021-11-11

最新評(píng)論