|
@@ -1,8 +1,6 @@ |
|
|
package me.chanjar.weixin.common.util.http; |
|
|
package me.chanjar.weixin.common.util.http; |
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import me.chanjar.weixin.common.util.StringUtils; |
|
|
import org.apache.http.annotation.NotThreadSafe; |
|
|
import org.apache.http.annotation.NotThreadSafe; |
|
|
import org.apache.http.auth.AuthScope; |
|
|
import org.apache.http.auth.AuthScope; |
|
|
import org.apache.http.auth.UsernamePasswordCredentials; |
|
|
import org.apache.http.auth.UsernamePasswordCredentials; |
|
@@ -23,7 +21,8 @@ import org.apache.http.impl.client.HttpClients; |
|
|
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; |
|
|
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; |
|
|
import org.apache.http.protocol.HttpContext; |
|
|
import org.apache.http.protocol.HttpContext; |
|
|
|
|
|
|
|
|
import me.chanjar.weixin.common.util.StringUtils; |
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* httpclient 连接管理器 |
|
|
* httpclient 连接管理器 |
|
@@ -104,44 +103,45 @@ public class DefaultApacheHttpClientBuilder implements ApacheHttpClientBuilder { |
|
|
|
|
|
|
|
|
private void prepare() { |
|
|
private void prepare() { |
|
|
Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create() |
|
|
Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create() |
|
|
.register("http", this.plainConnectionSocketFactory) |
|
|
|
|
|
.register("https", this.sslConnectionSocketFactory) |
|
|
|
|
|
.build(); |
|
|
|
|
|
|
|
|
.register("http", this.plainConnectionSocketFactory) |
|
|
|
|
|
.register("https", this.sslConnectionSocketFactory) |
|
|
|
|
|
.build(); |
|
|
|
|
|
|
|
|
@SuppressWarnings("resource") |
|
|
@SuppressWarnings("resource") |
|
|
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry); |
|
|
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry); |
|
|
connectionManager.setMaxTotal(this.maxTotalConn); |
|
|
connectionManager.setMaxTotal(this.maxTotalConn); |
|
|
connectionManager.setDefaultMaxPerRoute(this.maxConnPerHost); |
|
|
connectionManager.setDefaultMaxPerRoute(this.maxConnPerHost); |
|
|
connectionManager.setDefaultSocketConfig( |
|
|
connectionManager.setDefaultSocketConfig( |
|
|
SocketConfig.copy(SocketConfig.DEFAULT) |
|
|
|
|
|
.setSoTimeout(this.soTimeout) |
|
|
|
|
|
.build() |
|
|
|
|
|
|
|
|
SocketConfig.copy(SocketConfig.DEFAULT) |
|
|
|
|
|
.setSoTimeout(this.soTimeout) |
|
|
|
|
|
.build() |
|
|
); |
|
|
); |
|
|
|
|
|
|
|
|
this.idleConnectionMonitorThread = new IdleConnectionMonitorThread( |
|
|
this.idleConnectionMonitorThread = new IdleConnectionMonitorThread( |
|
|
connectionManager, this.idleConnTimeout, this.checkWaitTime); |
|
|
|
|
|
|
|
|
connectionManager, this.idleConnTimeout, this.checkWaitTime); |
|
|
this.idleConnectionMonitorThread.setDaemon(true); |
|
|
this.idleConnectionMonitorThread.setDaemon(true); |
|
|
this.idleConnectionMonitorThread.start(); |
|
|
this.idleConnectionMonitorThread.start(); |
|
|
|
|
|
|
|
|
this.httpClientBuilder = HttpClients.custom() |
|
|
this.httpClientBuilder = HttpClients.custom() |
|
|
.setConnectionManager(connectionManager) |
|
|
|
|
|
.setDefaultRequestConfig( |
|
|
|
|
|
RequestConfig.custom() |
|
|
|
|
|
.setSocketTimeout(this.soTimeout) |
|
|
|
|
|
.setConnectTimeout(this.connectionTimeout) |
|
|
|
|
|
.setConnectionRequestTimeout(this.connectionRequestTimeout) |
|
|
|
|
|
.build() |
|
|
|
|
|
) |
|
|
|
|
|
.setRetryHandler(this.httpRequestRetryHandler); |
|
|
|
|
|
|
|
|
.setConnectionManager(connectionManager) |
|
|
|
|
|
.setConnectionManagerShared(true) |
|
|
|
|
|
.setDefaultRequestConfig( |
|
|
|
|
|
RequestConfig.custom() |
|
|
|
|
|
.setSocketTimeout(this.soTimeout) |
|
|
|
|
|
.setConnectTimeout(this.connectionTimeout) |
|
|
|
|
|
.setConnectionRequestTimeout(this.connectionRequestTimeout) |
|
|
|
|
|
.build() |
|
|
|
|
|
) |
|
|
|
|
|
.setRetryHandler(this.httpRequestRetryHandler); |
|
|
|
|
|
|
|
|
if (StringUtils.isNotBlank(this.httpProxyHost) |
|
|
if (StringUtils.isNotBlank(this.httpProxyHost) |
|
|
&& StringUtils.isNotBlank(this.httpProxyUsername)) { |
|
|
|
|
|
|
|
|
&& StringUtils.isNotBlank(this.httpProxyUsername)) { |
|
|
// 使用代理服务器 需要用户认证的代理服务器 |
|
|
// 使用代理服务器 需要用户认证的代理服务器 |
|
|
CredentialsProvider provider = new BasicCredentialsProvider(); |
|
|
CredentialsProvider provider = new BasicCredentialsProvider(); |
|
|
provider.setCredentials( |
|
|
provider.setCredentials( |
|
|
new AuthScope(this.httpProxyHost, this.httpProxyPort), |
|
|
|
|
|
new UsernamePasswordCredentials(this.httpProxyUsername, |
|
|
|
|
|
this.httpProxyPassword)); |
|
|
|
|
|
|
|
|
new AuthScope(this.httpProxyHost, this.httpProxyPort), |
|
|
|
|
|
new UsernamePasswordCredentials(this.httpProxyUsername, |
|
|
|
|
|
this.httpProxyPassword)); |
|
|
this.httpClientBuilder.setDefaultCredentialsProvider(provider); |
|
|
this.httpClientBuilder.setDefaultCredentialsProvider(provider); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@@ -182,7 +182,7 @@ public class DefaultApacheHttpClientBuilder implements ApacheHttpClientBuilder { |
|
|
wait(this.checkWaitTime); |
|
|
wait(this.checkWaitTime); |
|
|
this.connMgr.closeExpiredConnections(); |
|
|
this.connMgr.closeExpiredConnections(); |
|
|
this.connMgr.closeIdleConnections(this.idleConnTimeout, |
|
|
this.connMgr.closeIdleConnections(this.idleConnTimeout, |
|
|
TimeUnit.MILLISECONDS); |
|
|
|
|
|
|
|
|
TimeUnit.MILLISECONDS); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} catch (InterruptedException ignore) { |
|
|
} catch (InterruptedException ignore) { |
|
|