package cn.itcast.crawler; 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.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.util.EntityUtils; import java.io.IOException; public class HttpClientPoolTest { public static void main(String[] args) { //創建連接池管理器 PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); //設置最大連接數 cm.setMaxTotal(100); //設置每個主機的最大連接數 cm.setDefaultMaxPerRoute(10); //使用連接池管理器管理請求 doGet(cm); doGet(cm); } private static void doGet(PoolingHttpClientConnectionManager cm) { //不是每次創建新的的HttpClient,而是從連接池中獲取HttpClient對象 CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(cm).build(); HttpGet httpGet = new HttpGet("http://www.itcast.cn"); CloseableHttpResponse response = null; try { response = httpClient.execute(httpGet); if(response.getStatusLine().getStatusCode() == 200){ String content = EntityUtils.toString(response.getEntity(), "utf8"); System.out.println(content.length()); } } catch (IOException e) { e.printStackTrace(); }finally { if(response != null) { try { response.close(); } catch (IOException e) { e.printStackTrace(); } //不能關閉HttpClient,由連接池管理HttpClient // httpClient.close(); } } } }
itcast-crawler-first(HttpClientPoolTest)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.