httpclient: 設置連接池及超時配置,請求數據:PoolingHttpClientConnectionManager


 

public static void main(String[] args) throws Exception{
		//httpclient連接池
		
		//創建連接池
		PoolingHttpClientConnectionManager cManager = new PoolingHttpClientConnectionManager();
		//設置最大連接數
		cManager.setMaxTotal(50);
		//設置每個主機地址的並發數
		cManager.setDefaultMaxPerRoute(20);
		
		//執行i請求
		doGet(cManager);
	}

	
	private static void doGet(PoolingHttpClientConnectionManager cm) throws Exception{
		//從連接池獲取連接,每次不一樣
		CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build();
		//設置http get
		HttpGet httpGet = new HttpGet("https://www.baidu.com");
		//設置請求參數
		RequestConfig config = RequestConfig.custom().setConnectTimeout(5000) //連接超時時間
				.setConnectionRequestTimeout(500) //從線程池中獲取線程超時時間
				.setSocketTimeout(8000) //設置數據超時時間
				.setStaleConnectionCheckEnabled(true) //提交請求前檢查連接是否可用
				.build();
		
		httpGet.setConfig(config);
		
		//返回數據
		CloseableHttpResponse response = null;
		
		try {
			response = httpClient.execute(httpGet);
			String con = EntityUtils.toString(response.getEntity(), "utf-8");
			System.out.println(con);
		}finally{
			if(response!=null){
				response.close();
			}
			httpClient.close();
		}
		
	}

  


免責聲明!

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



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