好久沒寫博文了,寫個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;
}


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