要确保Apache HttpClient真正超时,需要将ConnectTimeout设置为所需超时时间的2倍。以下是一个示例代码,展示如何配置Apache HttpClient以实现这一点:
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
public class HttpClientExample {
public static void main(String[] args) {
// 设置请求超时时间
int timeout = 5000; // 5秒
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(timeout)
.setConnectionRequestTimeout(timeout)
.setSocketTimeout(timeout)
.build();
// 创建HttpClient并设置请求配置
CloseableHttpClient httpClient = HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.build();
// 在此处执行HTTP请求...
}
}
在上面的示例中,我们通过使用RequestConfig来设置连接超时(ConnectTimeout)、连接请求超时(ConnectionRequestTimeout)和套接字超时(SocketTimeout)。这些超时时间都设置为所需超时时间的2倍(timeout * 2)。然后,我们使用HttpClients.custom()来创建自定义的HttpClient,并将请求配置设置为默认配置。之后,您可以在适当的位置执行HTTP请求。
请注意,上述代码仅为示例,您可以根据自己的需求进行调整。