我试图将我们的HttpClient依赖从4.0.1升级到4.3.5 . 并且在新lib中设置连接超时时感到困惑 . 对于以下代码:
HttpClient httpClient = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 300);
它将替换为以下代码:
RequestConfig config = RequestConfig.custom().setConnectTimeout(300).build();
HttpClient httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
但是,我不确定是否应该使用 setConnectTimeout 或 setConnectionRequestTimeout ,因为我不熟悉HttpClient . 在我看来,我应该在源代码中使用基于java doc的 setConnectionTimeout . 有人可以确认一下吗?提前致谢 .
/**
* Returns the timeout in milliseconds used when requesting a connection
* from the connection manager. A timeout value of zero is interpreted
* as an infinite timeout.
* <p/>
* A timeout value of zero is interpreted as an infinite timeout.
* A negative value is interpreted as undefined (system default).
* <p/>
* Default: <code>-1</code>
*/
public int getConnectionRequestTimeout() {
return connectionRequestTimeout;
}
/**
* Determines the timeout in milliseconds until a connection is established.
* A timeout value of zero is interpreted as an infinite timeout.
* <p/>
* A timeout value of zero is interpreted as an infinite timeout.
* A negative value is interpreted as undefined (system default).
* <p/>
* Default: <code>-1</code>
*/
public int getConnectTimeout() {
return connectTimeout;
}
1 回答
在Apache Http Client的4.3版中,配置被重构(再次) . 新方法如下代码:
连接超时是在 Build 与服务器的连接之前的超时 . 从连接管理器请求连接时使用的ConnectionRequestTimeout .