httpclient4.2.1最新版连接池配置
2013-04-03 23:39
381 查看
使用httpClient4.2.1包的方法:
/**
* 适合多线程的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;
}
/**
* 适合多线程的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最新版连接池配置
- httpclient4.2.1最新版连接池配置
- httpclient4.2.1最新版连接池配置
- [置顶] httpClient连接池 实现post get请求 https请求,4.2.1版本
- spring集成httpclient连接池配置
- httpclient连接池配置
- HttpClient 4.3连接池参数配置及源码解读
- HttpClient连接池配置文件
- HttpClient 4.3连接池参数配置及源码解读
- Tomcat5.5配置连接池
- DBCP,CP30及proxool连接池在spring+hibernate中的配置
- bonecp 连接池配置
- Tomcat 6.0 配置oracle数据库连接池
- weblogic配置连接池
- 在tomcat下context.xml中配置各种数据库连接池
- 轻松把玩HttpClient之封装HttpClient工具类(二),插件式配置HttpClient对象
- tomcat中的几种连接池配置代码
- tomcat 6.0.18+oracle11g配置数据源连接池遇到的问题
- servlet学习笔记10——tomcat配置(连接池)