Skip to content

Commit 5d63b1e

Browse files
author
ben
committed
添加httpclient配置参数的set方法及说明
1 parent cb1249f commit 5d63b1e

File tree

1 file changed

+82
-4
lines changed

1 file changed

+82
-4
lines changed

weixin-java-common/src/main/java/me/chanjar/weixin/common/util/http/DefaultApacheHttpClientBuilder.java

Lines changed: 82 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package me.chanjar.weixin.common.util.http;
22

3-
import java.io.IOException;
4-
import java.util.concurrent.TimeUnit;
5-
3+
import me.chanjar.weixin.common.util.StringUtils;
64
import org.apache.http.annotation.NotThreadSafe;
75
import org.apache.http.auth.AuthScope;
86
import org.apache.http.auth.UsernamePasswordCredentials;
@@ -22,15 +20,19 @@
2220
import org.apache.http.impl.client.HttpClients;
2321
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
2422
import org.apache.http.protocol.HttpContext;
23+
import org.slf4j.Logger;
24+
import org.slf4j.LoggerFactory;
2525

26-
import me.chanjar.weixin.common.util.StringUtils;
26+
import java.io.IOException;
27+
import java.util.concurrent.TimeUnit;
2728

2829
/**
2930
* httpclient 连接管理器
3031
* @author kakotor
3132
*/
3233
@NotThreadSafe
3334
public class DefaultApacheHttpClientBuilder implements ApacheHttpClientBuilder {
35+
protected final Logger log = LoggerFactory.getLogger(DefaultApacheHttpClientBuilder.class);
3436
private int connectionRequestTimeout = 3000;
3537
private int connectionTimeout = 5000;
3638
private int soTimeout = 5000;
@@ -98,6 +100,82 @@ public ApacheHttpClientBuilder sslConnectionSocketFactory(SSLConnectionSocketFac
98100
return this;
99101
}
100102

103+
/**
104+
* 获取链接的超时时间设置,默认3000ms
105+
* <p>
106+
* 设置为零时不超时,一直等待.
107+
* 设置为负数是使用系统默认设置(非上述的3000ms的默认值,而是httpclient的默认设置).
108+
* </p>
109+
* @param connectionRequestTimeout 获取链接的超时时间设置(单位毫秒),默认3000ms
110+
*/
111+
public void setConnectionRequestTimeout(int connectionRequestTimeout) {
112+
this.connectionRequestTimeout = connectionRequestTimeout;
113+
}
114+
115+
/**
116+
* 建立链接的超时时间,默认为5000ms.由于是在链接池获取链接,此设置应该并不起什么作用
117+
* <p>
118+
* 设置为零时不超时,一直等待.
119+
* 设置为负数是使用系统默认设置(非上述的5000ms的默认值,而是httpclient的默认设置).
120+
* </p>
121+
* @param connectionTimeout 建立链接的超时时间设置(单位毫秒),默认5000ms
122+
*/
123+
public void setConnectionTimeout(int connectionTimeout) {
124+
this.connectionTimeout = connectionTimeout;
125+
}
126+
127+
/**
128+
* 默认NIO的socket超时设置,默认5000ms.
129+
* @see java.net.SocketOptions#SO_TIMEOUT
130+
* @param soTimeout 默认NIO的socket超时设置,默认5000ms.
131+
*/
132+
public void setSoTimeout(int soTimeout) {
133+
this.soTimeout = soTimeout;
134+
}
135+
136+
/**
137+
* 空闲链接的超时时间,默认60000ms.
138+
* <p>
139+
* 超时的链接将在下一次空闲链接检查是被销毁
140+
* </p>
141+
* @param idleConnTimeout 空闲链接的超时时间,默认60000ms.
142+
*/
143+
public void setIdleConnTimeout(int idleConnTimeout) {
144+
this.idleConnTimeout = idleConnTimeout;
145+
}
146+
147+
/**
148+
* 检查空间链接的间隔周期,默认60000ms.
149+
* @param checkWaitTime 检查空间链接的间隔周期,默认60000ms.
150+
*/
151+
public void setCheckWaitTime(int checkWaitTime) {
152+
this.checkWaitTime = checkWaitTime;
153+
}
154+
155+
/**
156+
* 每路的最大链接数,默认10
157+
* @param maxConnPerHost 每路的最大链接数,默认10
158+
*/
159+
public void setMaxConnPerHost(int maxConnPerHost) {
160+
this.maxConnPerHost = maxConnPerHost;
161+
}
162+
163+
/**
164+
* 最大总连接数,默认50
165+
* @param maxTotalConn 最大总连接数,默认50
166+
*/
167+
public void setMaxTotalConn(int maxTotalConn) {
168+
this.maxTotalConn = maxTotalConn;
169+
}
170+
171+
/**
172+
* 自定义httpclient的User Agent
173+
* @param userAgent User Agent
174+
*/
175+
public void setUserAgent(String userAgent) {
176+
this.userAgent = userAgent;
177+
}
178+
101179
public IdleConnectionMonitorThread getIdleConnectionMonitorThread() {
102180
return this.idleConnectionMonitorThread;
103181
}

0 commit comments

Comments
 (0)