httpclient4.2.1最新版连接池配置

[java]  view plain  copy
  1. /** 
  2.  * 适合多线程的HttpClient,用httpClient4.2.1实现 
  3.  * @return DefaultHttpClient 
  4.  */  
  5. public static DefaultHttpClient getHttpClient()  
  6. {         
  7.     // 设置组件参数, HTTP协议的版本,1.1/1.0/0.9   
  8.     HttpParams params = new BasicHttpParams();   
  9.     HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);   
  10.     HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1");   
  11.     HttpProtocolParams.setUseExpectContinue(params, true);      
  12.   
  13.     //设置连接超时时间   
  14.     int REQUEST_TIMEOUT = 10*1000;  //设置请求超时10秒钟   
  15.     int SO_TIMEOUT = 10*1000;       //设置等待数据超时时间10秒钟   
  16.     //HttpConnectionParams.setConnectionTimeout(params, REQUEST_TIMEOUT);  
  17.     //HttpConnectionParams.setSoTimeout(params, SO_TIMEOUT);  
  18.     params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, REQUEST_TIMEOUT);    
  19.     params.setParameter(CoreConnectionPNames.SO_TIMEOUT, SO_TIMEOUT);   
  20.     
  21.     //设置访问协议   
  22.     SchemeRegistry schreg = new SchemeRegistry();    
  23.     schreg.register(new Scheme("http",80,PlainSocketFactory.getSocketFactory()));   
  24.     schreg.register(new Scheme("https"443, SSLSocketFactory.getSocketFactory()));         
  25.       
  26.     //多连接的线程安全的管理器   
  27.     PoolingClientConnectionManager pccm = new PoolingClientConnectionManager(schreg);  
  28.     pccm.setDefaultMaxPerRoute(20); //每个主机的最大并行链接数   
  29.     pccm.setMaxTotal(100);          //客户端总并行链接最大数      
  30.       
  31.     DefaultHttpClient httpClient = new DefaultHttpClient(pccm, params);    
  32.     return httpClient;  
  33. }  

如果以上代码有问题可能是现在安卓包里缺少PoolingClientConnectionManager这个类,倒入httpclient4.2.1解决问题。

 

另一种直接使用安卓内置的httpclient包的用法(ClientConnectionManager线程安全的连接管理类):

[java]  view plain  copy
  1. /** 
  2.      *  
  3.      * @return DefaultHttpClient 
  4.      */  
  5.     public static synchronized DefaultHttpClient getHttpClient()  
  6.     {         
  7.         if(httpClient == null)  
  8.         {                     
  9.             Log.v(TAG, "->> httpClient is null ->> do getHttpClient");  
  10.             // 设置组件参数, HTTP协议的版本,1.1/1.0/0.9   
  11.             HttpParams params = new BasicHttpParams();   
  12.             HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);   
  13.             HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1");   
  14.             HttpProtocolParams.setUseExpectContinue(params, true);      
  15.       
  16.             //设置连接超时时间   
  17.             int REQUEST_TIMEOUT = 10 * 1000;    //设置请求超时10秒钟   
  18.             int SO_TIMEOUT = 10 * 1000;         //设置等待数据超时时间10秒钟   
  19.             HttpConnectionParams.setConnectionTimeout(params, REQUEST_TIMEOUT);  
  20.             HttpConnectionParams.setSoTimeout(params, SO_TIMEOUT);  
  21.             ConnManagerParams.setTimeout(params, 1000); //从连接池中取连接的超时时间  
  22.                 
  23.             //设置访问协议   
  24.             SchemeRegistry schreg = new SchemeRegistry();    
  25.             schreg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));   
  26.             schreg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));       
  27.                           
  28.             // 使用线程安全的连接管理来创建HttpClient    
  29.             ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schreg);    
  30.             httpClient = new DefaultHttpClient(conMgr, params);   
  31.         }  
  32.         return httpClient;  
  33.     }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值