連接超時(connect timed out)和讀取超時(Read timed out)


設置連接超時和讀取超時方法:

RequestConfig config=RequestConfig.custom()
				.setConnectTimeout(10000) // 設置連接超時時間 10秒鍾
				.setSocketTimeout(10000) // 設置讀取超時時間10秒鍾
				.build();

  我們先把連接時間設置為10毫秒,並訪問一個香港地區的url,http://www.zhixuyuan.top

運行結果:

  我們再把讀取時間設置為10毫秒,測試

運行結果:

 

示例代碼:

import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class Demo {
	public static void main(String[] args) throws Exception {
		CloseableHttpClient closeableHttpClient=HttpClients.createDefault(); //1、創建實例
		
		/* 訪問我在香港機房的網站首頁 */
		HttpGet httpGet=new HttpGet("http://www.zhixuyuan.top"); //2、創建實例
		
		HttpHost proxy=new HttpHost("114.219.61.82", 8118);
		RequestConfig config=RequestConfig.custom().setProxy(proxy)
				.setConnectTimeout(3000) // 設置連接超時時間 3秒鍾
				.setSocketTimeout(10) // 設置讀取超時時間0.01秒鍾
				.build();
		httpGet.setConfig(config);
		
		CloseableHttpResponse closeableHttpResponse=closeableHttpClient.execute(httpGet); //3、執行
		HttpEntity httpEntity=closeableHttpResponse.getEntity(); //4、獲取實體
		
		//System.out.println(httpEntity.toString());
		System.out.println(EntityUtils.toString(httpEntity, "utf-8")); //獲取網頁內容
		
		closeableHttpResponse.close();
		closeableHttpClient.close();
	}
}

  

 

HttpClient連接時間

所謂連接的時候

是HttpClient發送請求的地方開始到連接上目標url主機地址的時間,

理論上是距離越短越快,線路越通暢越快,但是由於路由復雜交錯,往往連接上的時間都不固定,運氣不好連不上,

HttpClient的默認連接時間,默認可能是1分鍾,假如超過1分鍾 過一會繼續嘗試連接,這樣會有一個問題 假如遇到一個url老是連不上,會影響其他線程的線程進去,

所以我們有必要進行特殊設置,比如設置10秒鍾 假如10秒鍾沒有連接上 我們就報錯,這樣我們就可以進行業務上的處理,

比如我們業務上控制 過會再連接試試看。並且這個特殊url寫到log4j日志里去。方便管理員查看。

 

HttpClient讀取時間

所謂讀取的時間 是HttpClient已經連接到了目標服務器,然后進行內容數據的獲取,一般情況 讀取數據都是很快速的,

但是假如讀取的數據量大,或者是目標服務器本身的問題(比如讀取數據庫慢,並發量大等...)也會影響讀取時間。

我們還是需要來特殊設置下,比如設置10秒鍾 假如10秒鍾還沒讀取完,就報錯,同上,我們可以業務上處理。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM