httpclient4.2.1最新版连接池配置
2013-03-16 01:01
477 查看
/** * 适合多线程的HttpClient,用httpClient4.2.1实现 * @return DefaultHttpClient */ public static DefaultHttpClient getHttpClient() { // 设置组件参数, HTTP协议的版本,1.1/1.0/0.9 HttpParams params = new BasicHttpParams(); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1"); HttpProtocolParams.setUseExpectContinue(params, true); //设置连接超时时间 int REQUEST_TIMEOUT = 10*1000; //设置请求超时10秒钟 int SO_TIMEOUT = 10*1000; //设置等待数据超时时间10秒钟 //HttpConnectionParams.setConnectionTimeout(params, REQUEST_TIMEOUT); //HttpConnectionParams.setSoTimeout(params, SO_TIMEOUT); params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, REQUEST_TIMEOUT); params.setParameter(CoreConnectionPNames.SO_TIMEOUT, SO_TIMEOUT); //设置访问协议 SchemeRegistry schreg = new SchemeRegistry(); schreg.register(new Scheme("http",80,PlainSocketFactory.getSocketFactory())); schreg.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory())); //多连接的线程安全的管理器 PoolingClientConnectionManager pccm = new PoolingClientConnectionManager(schreg); pccm.setDefaultMaxPerRoute(20); //每个主机的最大并行链接数 pccm.setMaxTotal(100); //客户端总并行链接最大数 DefaultHttpClient httpClient = new DefaultHttpClient(pccm, params); return httpClient; }
如果以上代码有问题可能是现在安卓包里缺少PoolingClientConnectionManager这个类,倒入httpclient4.2.1解决问题。
另一种直接使用安卓内置的httpclient包的用法(ClientConnectionManager线程安全的连接管理类):
/** * * @return DefaultHttpClient */ public static synchronized DefaultHttpClient getHttpClient() { if(httpClient == null) { Log.v(TAG, "->> httpClient is null ->> do getHttpClient"); // 设置组件参数, HTTP协议的版本,1.1/1.0/0.9 HttpParams params = new BasicHttpParams(); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setUserAgent(params, "HttpComponents/1.1"); HttpProtocolParams.setUseExpectContinue(params, true); //设置连接超时时间 int REQUEST_TIMEOUT = 10 * 1000; //设置请求超时10秒钟 int SO_TIMEOUT = 10 * 1000; //设置等待数据超时时间10秒钟 HttpConnectionParams.setConnectionTimeout(params, REQUEST_TIMEOUT); HttpConnectionParams.setSoTimeout(params, SO_TIMEOUT); ConnManagerParams.setTimeout(params, 1000); //从连接池中取连接的超时时间 //设置访问协议 SchemeRegistry schreg = new SchemeRegistry(); schreg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); schreg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)); // 使用线程安全的连接管理来创建HttpClient ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schreg); httpClient = new DefaultHttpClient(conMgr, params); } return httpClient; }
相关文章推荐
- httpclient4.2.1最新版连接池配置
- httpclient4.2.1最新版连接池配置
- HttpClient 4.3连接池参数配置及源码解读
- httpclient4.2.1最新版连接池配置
- 配置使用连接池的httpClient
- httpclient4.2.1最新版连接池配置
- HttpClient 4.3连接池参数配置及源码解读
- HttpClient 4.3连接池参数配置及源码解读
- HttpClient 4.3连接池参数配置及源码解读_0
- httpclient4.2.1 连接池
- HttpClient 4.3连接池参数配置及源码解读
- httpClient连接池配置
- 轻松把玩HttpClient之配置ssl,采用绕过证书验证实现https
- Android 网络通信HttpClient的环境配置和注意点
- AsyncHttpClient的连接池使用逻辑
- HttpClient 连接池使用
- 轻松把玩HttpClient之封装HttpClient工具类(二),插件式配置HttpClient对象
- Http请求连接池 - HttpClient 的 PoolingHttpClientConnectionManager
- 问题备忘: httpclient连接池异常引发的惨案