目录
1.比较
HttpClient connectionRequestTimeout、connectTimeout、socketTimeout 三个参数对比:
connectionRequestTimeout | Returns the timeout in milliseconds used when requesting a connection from the connection manager. |
connectTimeout | Determines the timeout in milliseconds until a connection is established |
socketTimeout | Defines the socket timeout ({@code SO_TIMEOUT}) in milliseconds,which is the timeout for waiting for data or, put differently,a maximum period inactivity between two consecutive data packets. |
connectionRequestTimeout:等待从连接管理器、连接池获取连接的时间。HttpClient维护一个连接池来管理连接,类似于数据库连接池),单位毫秒
connectTimeout:与远程主机、服务器建立连接的最长时间,单位毫秒
socketTimeout:当数据从服务器传输到客户端时,两个连续数据包之间的最大时间间隔,单位毫秒
/**
* Returns the timeout in milliseconds used when requesting a connection
* from the connection manager.
* <p>
* A timeout value of zero is interpreted as an infinite timeout.
* A negative value is interpreted as undefined (system default if applicable).
* </p>
* <p>
* Default: {@code -1}
* </p>
*/
public int getConnectionRequestTimeout() {
return connectionRequestTimeout;
}/**
* Determines the timeout in milliseconds until a connection is established.
* <p>
* A timeout value of zero is interpreted as an infinite timeout.
* A negative value is interpreted as undefined (system default if applicable).
* </p>
* <p>
* Default: {@code -1}
* </p>
*/
public int getConnectTimeout() {
return connectTimeout;
}/**
* Defines the socket timeout ({@code SO_TIMEOUT}) in milliseconds,
* which is the timeout for waiting for data or, put differently,
* a maximum period inactivity between two consecutive data packets).
* <p>
* A timeout value of zero is interpreted as an infinite timeout.
* A negative value is interpreted as undefined (system default if applicable).
* </p>
* <p>
* Default: {@code -1}
* </p>
*/
public int getSocketTimeout() {
return socketTimeout;
}
2.使用
HttpPost httpPost = new HttpPost("URL");
RequestConfig requestConfig =RequestConfig.custom()
.setConnectTimeout(connectTimeout)
.setConnectionRequestTimeout(connectionRequestTimeout)
.setSocketTimeout(socketTimeout).build();
httpPost.setConfig(config);
3.参考
源码:httpcomponents-client/RequestConfig.java at 4.5.x · apache/httpcomponents-client · GitHub
httpcomponents-website/QuickStart.java at master · apache/httpcomponents-website · GitHub
其他:
https://blog.youkuaiyun.com/du771278794/article/details/83008867
https://blog.youkuaiyun.com/russle/article/details/126064154
https://blog.youkuaiyun.com/ttyy1112/article/details/108711476