下面列出了怎么用org.apache.http.conn.scheme.SocketFactory的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void run() {
SchemeRegistry supportedSchemes = new SchemeRegistry();
SocketFactory sf = PlainSocketFactory.getSocketFactory();
supportedSchemes.register(new Scheme("http", sf, 80));
ThreadSafeClientConnManager connManager = new ThreadSafeClientConnManager(supportedSchemes);
connManager.setDefaultMaxPerRoute(1000);
DefaultHttpClient client = new DefaultHttpClient(connManager);
HttpParams params = client.getParams();
HttpConnectionParams.setConnectionTimeout(params, 30000);
HttpConnectionParams.setSoTimeout(params, 30000);
client.setHttpRequestRetryHandler(new HttpRequestRetryHandler() {
public boolean retryRequest(IOException e, int i, HttpContext httpContext) {
return false;
}
});
//test API call
long t1 = System.currentTimeMillis();
testEndpoint(client,apiEndpoint);
long t2 = System.currentTimeMillis();
timeElapsedForAPICall = t2 - t1;
}
public static SocketFactory getDefault() {
if (instance == null) {
try {
instance = new TrustAllSSLSocketFactory();
} catch (Exception e) {
e.printStackTrace();
}
}
return instance;
}
public static SocketFactory getDefault() {
if (instance == null) {
try {
instance = new TrustAllSSLSocketFactory();
} catch (Exception e) {
e.printStackTrace();
}
}
return instance;
}
private static SocketFactory createSSLSocketFactory() {
try {
return new SSLSocketFactory(new TrustSelfSignedStrategy(), SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
} catch (Throwable x) {
Log.e("TAG", "Failed to create custom SSL socket factory, using default.", x);
return org.apache.http.conn.ssl.SSLSocketFactory.getSocketFactory();
}
}
public static SocketFactory getDefault() {
if (instance == null) {
try {
instance = new TrustAllSSLSocketFactory();
} catch (Exception e) {
e.printStackTrace();
}
}
return instance;
}
private static void addHttpsSchemaForTrustStore (final ClientConnectionManager connMan, final String tsPath, final char[] password) throws IOException, GeneralSecurityException {
final KeyStore truststore = loadKeyStore(tsPath, password);
final TrustManagerFactory tmfactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmfactory.init(truststore);
final SocketFactory sf = new TlsSniSocketFactory(tmfactory.getTrustManagers());
final Scheme scheme = new Scheme("https", sf, 443); // NOSONAR 443 is not a magic number. Its HTTPS specification.
connMan.getSchemeRegistry().register(scheme);
}
public static HttpClient createHttpClient(Context context) {
try {
SchemeRegistry registry = new SchemeRegistry();
SocketFactory socketFactory = createSecureSocketFactory();
registry.register(new Scheme("http", PlainSocketFactory
.getSocketFactory(), 80));
registry.register(new Scheme("https", socketFactory, 443));
HttpParams connManagerParams = new BasicHttpParams();
ConnManagerParams.setMaxTotalConnections(connManagerParams, 20);
ConnManagerParams.setMaxConnectionsPerRoute(connManagerParams,
new ConnPerRouteBean(20));
ClientConnectionManager ccm = new ThreadSafeClientConnManager(
connManagerParams, registry);
DefaultHttpClient client = new DefaultHttpClient(ccm, null);
client.setHttpRequestRetryHandler(new DefaultHttpRequestRetryHandler(
0, true));
return client;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static HttpClient getHttpClient(Context context, String str, String str2) {
OpenConfig instance;
int i;
int i2 = 0;
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme(IDataSource.SCHEME_HTTP_TAG, PlainSocketFactory.getSocketFactory(), 80));
if (VERSION.SDK_INT < 16) {
try {
KeyStore instance2 = KeyStore.getInstance(KeyStore.getDefaultType());
instance2.load(null, null);
SocketFactory customSSLSocketFactory = new CustomSSLSocketFactory(instance2);
customSSLSocketFactory.setHostnameVerifier(SSLSocketFactory.STRICT_HOSTNAME_VERIFIER);
schemeRegistry.register(new Scheme(IDataSource.SCHEME_HTTPS_TAG, customSSLSocketFactory, 443));
} catch (Exception e) {
schemeRegistry.register(new Scheme(IDataSource.SCHEME_HTTPS_TAG, SSLSocketFactory.getSocketFactory(), 443));
}
} else {
schemeRegistry.register(new Scheme(IDataSource.SCHEME_HTTPS_TAG, SSLSocketFactory.getSocketFactory(), 443));
}
HttpParams basicHttpParams = new BasicHttpParams();
if (context != null) {
instance = OpenConfig.getInstance(context, str);
} else {
instance = null;
}
if (instance != null) {
i = instance.getInt("Common_HttpConnectionTimeout");
i2 = instance.getInt("Common_SocketConnectionTimeout");
} else {
i = 0;
}
if (i == 0) {
i = LetvConstant.WIDGET_UPDATE_UI_TIME;
}
if (i2 == 0) {
i2 = 30000;
}
HttpConnectionParams.setConnectionTimeout(basicHttpParams, i);
HttpConnectionParams.setSoTimeout(basicHttpParams, i2);
HttpProtocolParams.setVersion(basicHttpParams, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(basicHttpParams, "UTF-8");
HttpProtocolParams.setUserAgent(basicHttpParams, "AndroidSDK_" + VERSION.SDK + EventsFilesManager.ROLL_OVER_FILE_NAME_SEPARATOR + Build.DEVICE + EventsFilesManager.ROLL_OVER_FILE_NAME_SEPARATOR + VERSION.RELEASE);
HttpClient defaultHttpClient = new DefaultHttpClient(new ThreadSafeClientConnManager(basicHttpParams, schemeRegistry), basicHttpParams);
NetworkProxy proxy = getProxy(context);
if (proxy != null) {
defaultHttpClient.getParams().setParameter("http.route.default-proxy", new HttpHost(proxy.host, proxy.port));
}
return defaultHttpClient;
}
public RetrofitApacheClientBuilder registerScheme(String name, SocketFactory factory, int port) {
httpClientBuilder.registerScheme(name, factory, port);
return this;
}
public HttpClientBuilder registerScheme(String name, SocketFactory factory, int port) {
schemeRegistry.register(new Scheme(name, factory, port));
return this;
}
private static void addHttpsSchema (final ClientConnectionManager connMan) {
final SocketFactory sf = SSLSocketFactory.getSocketFactory();
final Scheme scheme = new Scheme("https", sf, 443); // NOSONAR 443 is not a magic number. Its HTTPS specification.
connMan.getSchemeRegistry().register(scheme);
}
protected static SocketFactory createSecureSocketFactory() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
return new TLSSNISocketFactory();
}
return SSLSocketFactory.getSocketFactory();
}