好久没写博文了,写个Http连接请求获取给大家,里面一些详细参数设置,都有注释

private static HttpClient httpClient;
private static int DEAFUL_BUFFER_SIZE = 8169;

public static synchronized HttpClient getInstace()
throws KeyStoreException, KeyManagementException,
UnrecoverableKeyException, NoSuchAlgorithmException,
CertificateException, IOException{
if(httpClient == null){
HttpParams httpParams = new BasicHttpParams();
//超时设置
ConnManagerParams.setTimeout(httpParams, 10*1000);//连接池获取连接超时
HttpConnectionParams.setConnectionTimeout(httpParams, 10*1000);//连接超时
HttpConnectionParams.setSoTimeout(httpParams, 10*1000);//请求超时(读超时)
//线程最大连接数
ConnManagerParams.setMaxConnectionsPerRoute(httpParams, new ConnPerRouteBean(5));
//线程连接总数
ConnManagerParams.setMaxTotalConnections(httpParams, 10);
//异常处理机制
HttpProtocolParams.setUseExpectContinue(httpParams, true);
//是否检查旧连接数
HttpConnectionParams.setStaleCheckingEnabled(httpParams, false);
//设置版本
HttpProtocolParams.setVersion(httpParams, HttpVersion.HTTP_1_1);
//设置编码
HttpProtocolParams.setContentCharset(httpParams, HTTP.UTF_8);
//设置重定向
HttpClientParams.setRedirecting(httpParams, false);
//设置是否延时发送
HttpConnectionParams.setTcpNoDelay(httpParams, true);
//设置缓存大小
HttpConnectionParams.setSocketBufferSize(httpParams, DEAFUL_BUFFER_SIZE);
//设置允许所有证书
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(null,null);
SSLSocketFactory sf = new SSLSocketFactory(keyStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
// 设置支持HTTP和HTTPS
SchemeRegistry sr = new SchemeRegistry();
sr.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
sr.register(new Scheme("https", sf, 4403));
ClientConnectionManager manager = new ThreadSafeClientConnManager(httpParams, sr);
httpClient = new DefaultHttpClient(manager,httpParams);
}
return httpClient;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章