`

HttpClient连接超时及读取超时

 
阅读更多

HttpClient连接超时及读取超时

 

httpClient在执行具体http请求时候 有一个连接的时间和读取内容的时间;

 

HttpClient连接时间

所谓连接的时候 是HttpClient发送请求的地方开始到连接上目标url主机地址的时间,理论上是距离越短越快,

线路越通畅越快,但是由于路由复杂交错,往往连接上的时间都不固定,运气不好连不上,HttpClient的默认连接时间,据我测试

默认是1分钟,假如超过1分钟 过一会继续尝试连接,这样会有一个问题 假如遇到一个url老是连不上,会影响其他线程的线程进去,说难听点,

就是蹲着茅坑不拉屎。所以我们有必要进行特殊设置,比如设置10秒钟 假如10秒钟没有连接上 我们就报错,这样我们就可以进行业务上的处理,

比如我们业务上控制 过会再连接试试看。并且这个特殊url写到log4j日志里去。方便管理员查看。

 

HttpClient读取时间

所谓读取的时间 是HttpClient已经连接到了目标服务器,然后进行内容数据的获取,一般情况 读取数据都是很快速的,

但是假如读取的数据量大,或者是目标服务器本身的问题(比如读取数据库速度慢,并发量大等等..)也会影响读取时间。

同上,我们还是需要来特殊设置下,比如设置10秒钟 假如10秒钟还没读取完,就报错,同上,我们可以业务上处理。

 

比如我们这里给个地址 http://central.maven.org/maven2/

 

这个是国外地址 连接时间比较长的,而且读取的内容多 

很容易出现连接超时和读取超时;

 

我们如何用代码实现呢?

HttpClient给我们提供了一个RequestConfig类 专门用于配置参数比如连接时间,读取时间以及前面讲解的代理IP等。

 

这里给下示例代码:

package com.open1111.httpclient.chap05;
 
import org.apache.http.HttpEntity;
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 Demo2 {
 
    public static void main(String[] args)throws Exception {
        CloseableHttpClient httpClient=HttpClients.createDefault(); // 创建httpClient实例
        HttpGet httpGet=new HttpGet("http://central.maven.org/maven2/"); // 创建httpget实例
        RequestConfig config=RequestConfig.custom()
                .setConnectTimeout(5000)
                .setSocketTimeout(5000)
                .build();
        httpGet.setConfig(config);
        httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0");
        CloseableHttpResponse response=httpClient.execute(httpGet); // 执行http get请求
        HttpEntity entity=response.getEntity(); // 获取返回实体
        System.out.println("网页内容:"+EntityUtils.toString(entity, "utf-8")); // 获取网页内容
        response.close(); // response关闭
        httpClient.close(); // httpClient关闭
    }
}

 

分享到:
评论

相关推荐

    dotnet 6 精细控制 HttpClient 网络请求超时.rar

    在.NET 6中,HttpClient是用于...通过合理地设置Timeout、使用取消令牌,以及对连接和读取超时进行单独控制,可以确保你的应用程序在处理网络请求时具有更好的健壮性和效率。在C#或Java中,这些技巧都是值得掌握的。

    httpclient方式调用url

    除了基本的HTTP请求,HttpClient还支持其他特性,如重试策略、连接池管理、Cookie管理等。例如,可以通过`RequestConfig`定制请求配置,包含超时时间、重试次数等。 ```java RequestConfig config = RequestConfig....

    httpclient.jar包下载

    例如,正确设置连接超时、读取超时以及连接池大小,可以避免因网络延迟导致的问题。 在实际开发中,我们可以通过Maven或Gradle等构建工具来管理和依赖httpclient.jar,确保依赖的版本一致性,并且可以方便地升级或...

    httpClienthttpClient

    10. **Timeouts**:可以设置连接超时、读取超时和写入超时,以防止程序因网络问题而阻塞。 在实际使用中,你通常会先创建一个HttpClient实例,然后创建HttpRequestBase对象,设置请求参数,再通过HttpClient发送...

    HTTPClient工具类及架包

    可以使用`HttpClients.createDefault()`来创建一个默认配置的HttpClient,或者自定义配置,如设置连接超时、重试策略等。 2. **创建HttpGet和HttpPost对象**:根据需求,可以创建`HttpGet`或`HttpPost`对象来指定...

    httpClient需要的jar包

    10. **性能优化**:通过配置连接超时、响应超时、线程池大小等参数,以及使用合适的连接管理策略,可以进一步优化HttpClient的性能。 在实际使用HttpClient时,需要根据项目需求选择合适的版本,理解其工作原理,...

    commons-httpclient-3.1 java API详细index格式文档

    1. 连接超时:`HttpClient`提供了设置连接建立、数据传输和响应超时的方法,通过`setConnectionTimeout()`、`setSoTimeout()`和`setTimeout()`。 2. 连接池管理:`MultiThreadedHttpConnectionManager`可以管理连接...

    httpclient

    可以通过设置连接超时、读写超时、最大连接数、连接复用策略等来优化HttpClient的性能。 10. **异步操作**: HttpClient也支持异步操作,通过`HttpAsyncClient`类,可以在回调函数中处理响应,适合于高并发场景。...

    httpclient-4.5.6.rar

    2. **合理设置超时**:根据实际需求设置连接超时和读取超时,防止程序卡死。 3. **连接池管理**:根据并发量调整连接池大小,避免过多的连接创建和销毁。 4. **错误处理**:处理异常情况,如网络中断、服务器错误...

    java超时控制

    当使用`HttpURLConnection`或者第三方库如Apache HttpClient进行HTTP请求时,可以通过设置连接超时和读取超时来控制请求的超时。例如,`setConnectTimeout()`和`setReadTimeout()`方法可以分别用于设置连接和读取的...

    httpclient httpclient.jar

    通常,我们创建一个HttpClient实例,并设置其配置参数,如连接超时、重试策略等。 2. **HttpHost**:表示目标HTTP服务器的信息,包括主机名、端口和协议(HTTP或HTTPS)。 3. **HttpGet/HttpPost**:这些是执行...

    apache httpclient jar包

    - **HttpClient实例**:创建HttpClient对象是执行HTTP请求的第一步,它可以配置各种设置,如连接超时、重试策略等。 - **HttpHost**:表示一个HTTP或HTTPS服务器,包括主机名、端口号和协议。 - **...

    使用HttpClient必须的jar包

    10. **配置和定制**:HttpClient具有高度可配置性,可以根据项目需求调整连接超时、读取超时、连接池大小等参数。 在实际使用中,开发者还需要根据项目的具体需求,考虑是否需要引入其他辅助库,如处理JSON的Gson或...

    Android的HttpClient开发实例

    1. 连接超时和读取超时:设置合适的超时时间可以避免因网络问题导致的阻塞。 2. 使用`BasicNameValuePair`构造键值对,用于POST请求的参数。 3. 关于线程安全:`HttpClient`不是线程安全的,如果你在多线程环境中...

    HTTPClient

    .setSocketTimeout(10000) // 数据读取超时时间 .setConnectionRequestTimeout(1000) // 请求连接超时时间 .build(); HttpGet httpGet = new HttpGet("http://example.com"); httpGet.setConfig(requestConfig);...

    httpclient4.1.2.zip

    此外,还可以设置请求超时、连接超时等参数,以适应不同的网络环境。 其次,HttpClient 4.1.2的连接管理是其一大亮点。`PoolingHttpClientConnectionManager`允许复用HTTP连接,从而显著提高了性能,减少了服务器...

    commons-httpclient-3.0-rc4.rar

    1. **初始化HttpClient**:创建HttpClient实例,并根据需求设置各种参数,如连接超时、读取超时等。 2. **创建HttpMethod对象**:选择适合的HttpMethod子类,配置URL和其他选项。 3. **执行请求**:通过HttpClient...

    commons-httpclient-3.1jar包

    1. 连接超时:可以调整HttpConnectionManager的超时参数,避免请求等待过长。 2. 空闲连接回收:设置合理的KeepAlive策略,防止内存泄露。 3. SSL证书问题:处理自签名或不受信任的证书,可能需要自定义...

Global site tag (gtag.js) - Google Analytics