HttpClient4

HttpClient4

HTTP Client4.0的ThreadSafeClientConnManager实现了HTTP连接的池化管理,其管理连接的基本单位是Route(路由),每个路由上都会维护一定数量的HTTP连接。这里的Route的概念可以理解为客户端机器到目标机器的一条线路,例如使用HttpClient的实现来分别请求 www.163.com 的资源和 www.sina.com 的资源就会产生两个route。缺省条件下对于每个Route,HttpClient仅维护2个连接,总数不超过20个连接,显然对于大多数应用来讲,都是不够用的,可以通过设置HTTP参数进行调整。

[java]  view plain  copy
 
  在CODE上查看代码片 派生到我的代码片
  1. HttpParams params = new BasicHttpParams();  
  2. //将每个路由的最大连接数增加到200  
  3. ConnManagerParams.setMaxTotalConnections(params,200);  
  4. // 将每个路由的默认连接数设置为20  
  5. ConnPerRouteBean connPerRoute = new ConnPerRouteBean(20);  
  6. // 设置某一个IP的最大连接数  
  7. HttpHost localhost = new HttpHost("locahost"80);  
  8. connPerRoute.setMaxForRoute(new HttpRoute(localhost), 50);  
  9. ConnManagerParams.setMaxConnectionsPerRoute(params, connPerRoute);  
  10. SchemeRegistry schemeRegistry = new SchemeRegistry();  
  11. schemeRegistry.register(  
  12. new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));  
  13. schemeRegistry.register(  
  14. new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));  
  15. ClientConnectionManager cm = new ThreadSafeClientConnManager(params, schemeRegistry);  
  16. HttpClient httpClient = new DefaultHttpClient(cm, params);  


     

可以配置的HTTP参数有:
1)  http.conn-manager.timeout 当某一线程向连接池请求分配线程时,如果连接池已经没有可以分配的连接时,该线程将会被阻塞,直至http.conn-manager.timeout超时,抛出ConnectionPoolTimeoutException。
2)  http.conn-manager.max-per-route 每个路由的最大连接数;
3)  http.conn-manager.max-total 总的连接数;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值