您的位置:首页 > 理论基础 > 计算机网络

httpclient4.2.1最新版连接池配置

2016-03-10 16:05 513 查看
/**
* 适合多线程的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;
}

  http://blog.csdn.net/taki_dsm/article/details/8680072
/**
*
* @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;
}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: