HttpClient 4 和 HttpClient 3 设置超时

本文介绍了如何在HttpClient 4及3中设置连接超时与读取超时参数,包括使用CoreConnectionPNames.CONNECTION_TIMEOUT与CoreConnectionPNames.SO_TIMEOUT进行配置的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HttpClient 4:
连接超时:

httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,60000); 
// 或者
HttpConnectionParams.setConnectionTimeout(params, 6000);

读取超时:

httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,60000); 
// 或者
HttpConnectionParams.setSoTimeout(params, 60000);


HttpClient 3:
连接超时:

httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(60000); 


读取超时:

httpClient.getHttpConnectionManager().getParams().setSoTimeout(60000);
### 如何在 HttpClient设置请求超时时间 在 Java 的 Apache HttpClient 库中,可以通过配置 `RequestConfig` 来设置请求的超时时间。这包括连接超时时间读取超时时间。以下是具体的实现方式: #### 设置超时时间的核心类 `RequestConfig` 是用于定义请求参数的关键类之一。通过该类可以指定连接超时、套接字超时以及其他高级选项。 #### 示例代码 以下是一个完整的示例,展示如何使用 HttpClient 发起带超时设置的 GET 请求: ```java import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; public class HttpClientTimeoutExample { public static void main(String[] args) throws Exception { // 创建 CloseableHttpClient 实例 try (CloseableHttpClient httpClient = HttpClients.createDefault()) { // 定义目标 URL String url = "https://example.com"; // 配置 RequestConfig 对象并设置超时时间(单位:毫秒) int connectionTimeout = 5000; // 连接超时时间为 5 秒 int socketTimeout = 10000; // 套接字超时时间为 10 秒 RequestConfig config = RequestConfig.custom() .setConnectTimeout(connectionTimeout) .setSocketTimeout(socketTimeout) .build(); // 创建HttpGet对象并将配置应用到请求中 HttpGet request = new HttpGet(url); request.setConfig(config); // 执行请求并获取响应 try (CloseableHttpResponse response = httpClient.execute(request)) { // 输出状态码 System.out.println("Response Code: " " + response.getStatusLine().getStatusCode()); // 获取并打印响应体内容 String responseBody = EntityUtils.toString(response.getEntity()); System.out.println("Response Body: " + responseBody); } } } } ``` 以上代码展示了如何创建一个带有自定义超时设置的 HTTP 请求[^2]。其中: - **connect timeout** 控制建立初始 TCP 连接所需的最大等待时间。 - **socket timeout** 则控制数据包传输过程中的最大阻塞时间。 如果服务器未能及时响应,则会抛出相应的异常 (`SocketTimeoutException`) 或者无法完成连接操作 (`ConnectTimeoutException`)。 #### 超时设置的重要性 合理地调整这些超时值有助于提高程序健壮性用户体验。例如,在网络状况较差的情况下适当延长超时时间可减少失败率;而在高并发环境下缩短超时时限则能更快释放资源[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值