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; }
好久沒寫博文了,寫個Http連接請求獲取給大家,裏面一些詳細參數設置,都有註釋
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.