| @@ -20,6 +20,7 @@ import org.apache.http.conn.socket.PlainConnectionSocketFactory; | |||||
| import org.apache.http.conn.ssl.SSLConnectionSocketFactory; | import org.apache.http.conn.ssl.SSLConnectionSocketFactory; | ||||
| import org.apache.http.impl.client.BasicCredentialsProvider; | import org.apache.http.impl.client.BasicCredentialsProvider; | ||||
| import org.apache.http.impl.client.CloseableHttpClient; | import org.apache.http.impl.client.CloseableHttpClient; | ||||
| import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy; | |||||
| import org.apache.http.impl.client.HttpClientBuilder; | import org.apache.http.impl.client.HttpClientBuilder; | ||||
| import org.apache.http.impl.client.HttpClients; | import org.apache.http.impl.client.HttpClients; | ||||
| import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; | import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; | ||||
| @@ -245,13 +246,18 @@ public class FmHttpClientBuilder implements ApacheHttpClientBuilder { | |||||
| this.httpClientBuilder = HttpClients.custom().setConnectionManager(connectionManager) | this.httpClientBuilder = HttpClients.custom().setConnectionManager(connectionManager) | ||||
| .setConnectionManagerShared(true) | .setConnectionManagerShared(true) | ||||
| .setKeepAliveStrategy(DefaultConnectionKeepAliveStrategy.INSTANCE) | |||||
| .setDefaultRequestConfig( | .setDefaultRequestConfig( | ||||
| RequestConfig.custom() | RequestConfig.custom() | ||||
| .setSocketTimeout(this.soTimeout) | .setSocketTimeout(this.soTimeout) | ||||
| .setConnectTimeout(this.connectionTimeout) | .setConnectTimeout(this.connectionTimeout) | ||||
| .setConnectionRequestTimeout(this.connectionRequestTimeout) | .setConnectionRequestTimeout(this.connectionRequestTimeout) | ||||
| .build()) | .build()) | ||||
| .setRetryHandler(this.httpRequestRetryHandler); | |||||
| .setRetryHandler(this.httpRequestRetryHandler) | |||||
| .evictExpiredConnections() | |||||
| //MaxIdleTime 必须小于服务端的关闭时间否则有可能出现NoHttpResponse | |||||
| .evictIdleConnections(3,TimeUnit.SECONDS);//用来关闭闲置连接,它会启动一个守护线程进行清理工作。用户可以通过builder#evictIdleConnections开启该组件,并通过builder#setmaxIdleTime设置最大空闲时间。 | |||||
| ; | |||||
| if (StringUtils.isNotBlank(this.httpProxyHost) && StringUtils.isNotBlank(this.httpProxyUsername)) { | if (StringUtils.isNotBlank(this.httpProxyHost) && StringUtils.isNotBlank(this.httpProxyUsername)) { | ||||
| // 使用代理服务器 需要用户认证的代理服务器 | // 使用代理服务器 需要用户认证的代理服务器 | ||||