in src/main/java/com/aliyun/mns/common/http/HttpFactory.java [151:206]
public static CloseableHttpAsyncClient createHttpAsyncClient(
PoolingNHttpClientConnectionManager connManager,
ClientConfiguration config) {
HttpAsyncClientBuilder httpClientBuilder = HttpAsyncClients.custom()
.setConnectionManager(connManager);
// Set proxy if set.
String proxyHost = config.getProxyHost();
int proxyPort = config.getProxyPort();
if (proxyHost != null && proxyPort > 0) {
HttpHost proxy = new HttpHost(proxyHost, proxyPort);
httpClientBuilder.setProxy(proxy);
String proxyUsername = config.getProxyUsername();
String proxyPassword = config.getProxyPassword();
if (proxyUsername != null && proxyPassword != null) {
String proxyDomain = config.getProxyDomain();
String proxyWorkstation = config.getProxyWorkstation();
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(new AuthScope(proxy),
new NTCredentials(proxyUsername, proxyPassword,
proxyWorkstation, proxyDomain)
);
httpClientBuilder
.setDefaultCredentialsProvider(credentialsProvider);
}
}
RequestConfig defaultRequestConfig = RequestConfig
.custom()
.setCookieSpec(CookieSpecs.BEST_MATCH)
.setExpectContinueEnabled(true)
.setStaleConnectionCheckEnabled(true)
.setTargetPreferredAuthSchemes(
Arrays.asList(AuthSchemes.NTLM, AuthSchemes.DIGEST))
.setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.BASIC))
.setConnectTimeout(config.getConnectionTimeout())
.setSocketTimeout(config.getSocketTimeout())
.setExpectContinueEnabled(config.isExceptContinue()).build();
httpClientBuilder.setDefaultRequestConfig(defaultRequestConfig);
httpClientBuilder
.setMaxConnPerRoute(config.getMaxConnectionsPerRoute());
httpClientBuilder.setMaxConnTotal(config.getMaxConnections());
httpClientBuilder.setUserAgent(VersionInfoUtils.getDefaultUserAgent());
CloseableHttpAsyncClient httpclient = httpClientBuilder.build();
return httpclient;
}