`
collegeyuan
  • 浏览: 30977 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

HttpClient 4.3超时设置

 
阅读更多

HttpClient 4.3。HttpClient这货和Lucene一样,每个版本的API都变化很大,这有点让人头疼。就好比创建一个HttpClient对象吧,每一个版本的都不一样,

3.X是这样的

1
HttpClient httpClient=newDefaultHttpClient();

4.3是这样的

1
CloseableHttpClient httpClient = HttpClients.createDefault();

当然,上面这些变化只不过是一些小变化,大家看看API大家就都会了。

我要讲的是超时设置,HttpClient有三种超时设置,最近比较忙,没时间具体归纳总结,以后再补上,我这里就讲一些最简单最易用的超时设置方法。

这是个3.X的超时设置方法

1
2
3
HttpClient client = newHttpClient();
client.setConnectionTimeout(30000); 
client.setTimeout(30000);
1
2
HttpClient httpClient= newHttpClient(); 
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);

4.X版本的超时设置(4.3后已过时)

1
2
3
HttpClient httpClient=newDefaultHttpClient();
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,2000);//连接时间
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,2000);//数据传输时间

4.3版本超时设置

1
2
3
4
5
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet=newHttpGet("http://www.baidu.com");//HTTP Get请求(POST雷同)
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();//设置请求和传输超时时间
httpGet.setConfig(requestConfig);
httpClient.execute(httpGet);//执行请求

BTW,4.3版本不设置超时的话,一旦服务器没有响应,等待时间N久(>24小时)。

 

 

       HttpClient升级到4.5版本后,API有很多变化,HttpClient 4之后,API一直没有太稳定,我感觉4.5版本抽象后,很多API应该快稳定了。

       使用HttpClient,一般都需要设置连接超时时间和获取数据超时时间。这两个参数很重要,目的是为了防止访问其他http时,由于超时导致自己的应用受影响。

       4.5版本中,这两个参数的设置都抽象到了RequestConfig中,由相应的Builder构建,具体的例子如下:

1
2
3
4
5
6
7
8
9
CloseableHttpClient httpclient = HttpClients.createDefault();  
HttpGet httpGet = new HttpGet("http://stackoverflow.com/");  
RequestConfig requestConfig = RequestConfig.custom()  
        .setConnectTimeout(5000).setConnectionRequestTimeout(1000)  
        .setSocketTimeout(5000).build();  
httpGet.setConfig(requestConfig);  
CloseableHttpResponse response = httpclient.execute(httpGet);  
System.out.println("得到的结果:" + response.getStatusLine());//得到请求结果  
HttpEntity entity = response.getEntity();//得到请求回来的数据

setConnectTimeout:设置连接超时时间,单位毫秒。

setConnectionRequestTimeout:设置从connect Manager获取Connection 超时时间,单位毫秒。这个属性是新加的属性,因为目前版本是可以共享连接池的。

setSocketTimeout:请求获取数据的超时时间,单位毫秒。 如果访问一个接口,多少时间内无法返回数据,就直接放弃此次调用。

分享到:
评论

相关推荐

    httpclient4.3工具类

    5. **请求和响应的配置**:你可以为每个请求设置超时、重试策略、Cookie管理等。同样,响应可以被解析为不同类型的实体,如String、InputStream或File。 6. **重定向处理**:HttpClient 4.3提供自动处理HTTP重定向...

    httpclient4.3 封装工具类

    这个封裝工具类是对HttpClient 4.3进行的二次开发,旨在简化HTTP请求的处理,解决一些常见的问题,如代理设置、多线程并发请求、SSL安全连接以及GET和POST请求的通用实现。 1. **代理问题**:在进行网络请求时,...

    httpClient4.3 Jar包 demo

    在这个"httpClient4.3 Jar包 demo"中,你将找到HttpClient 4.3的jar文件以及相关的示例代码,对于学习和理解HttpClient的使用非常有帮助。 HttpClient 4.3主要知识点包括: 1. **基础概念**: - **HttpClient对象...

    httpClient4.3官方包

    这个"httpClient4.3官方包"包含了HttpClient 4.3.1版本的所有源代码和必要的文档文件,使得用户可以直接在自己的项目中使用或进行深入学习。 HttpClient 4.3版本引入了许多改进和新特性,如支持最新的HTTP/1.1和...

    HttpClient4.3需要的jar

    10. **性能优化**:HttpClient提供了多种优化策略,例如重用连接、超时设置、线程池管理等,以适应不同的网络环境和应用需求。 了解以上知识点,开发者可以利用HttpClient 4.3高效地实现与Web服务器的交互,无论是...

    httpClient4.3

    开发者通常会创建一个 HttpClient 实例,配置各种参数,如连接超时、重试策略等。 2. **请求执行器(HttpRequestExecutor)**:处理 HTTP 请求的发送和响应的接收。HttpClient 提供了默认的实现,但也可以自定义以...

    HTTPClient 4.3.X

    2. **连接管理**:理解ConnectionManager,如何设置连接池大小,超时时间,复用连接等。 3. **请求执行器**:使用DefaultHttpClient或者CloseableHttpClient,了解ExecutorService的概念。 4. **HTTP方法**:GET、...

    httpclient-4.3.jar

    1. 创建HttpClient实例:通过HttpClientBuilder,用户可以定制化构建HttpClient对象,设置连接超时、重试策略等参数。 2. 发送HTTP请求:使用HttpGet、HttpPost等类实例化请求,然后通过HttpClient对象的execute...

    httpclient4.3所需jar包

    九、超时设置 通过`RequestConfig`可以设置连接超时和读取超时: ```java RequestConfig config = RequestConfig.custom() .setConnectTimeout(5000) // 连接超时 .setSocketTimeout(10000) // 读取超时 .build...

    HttpClient4.3教程共51页.pdf.zip

    2. **连接管理**:HttpClient 4.3引入了更精细的连接管理机制,允许用户自定义连接池大小,控制并发请求的数量,以及设置超时策略,以优化网络资源的使用。 3. **多路复用**:HttpClient 4.3支持HTTP/1.1的Keep-...

    httpclient4.3 封装工具类.zip

    - **超时设置**:合理设置请求和连接超时,防止程序阻塞。 6. **SSL支持**:HttpClient支持HTTPS通信,可以配置SSLContext和KeyManager/FixedTrustManager来处理证书和信任问题。 7. **Cookie管理**:如果应用...

    httpclient4.3中文教程

    此外,HttpClient 还支持设置请求头、身份验证、连接管理、超时控制等高级功能,以满足各种复杂的网络通信需求。 HttpClient 不是浏览器,它不会解析 HTML 内容或执行 JavaScript。它是一个低级别的库,主要用于...

    Httpclient 4.3 jar包

    - **超时设置**:允许设置连接超时、读取超时等,防止程序无响应。 - **Cookie管理**:支持Cookie规范,可以处理服务器返回的Cookie并将其发送回服务器。 2. **Httpmime组件(httpmime-4.3.jar)** - **MIME类型...

    HttpClient4.3

    3. **异步操作**:HttpClient 4.3 引入了异步 API,允许非阻塞的网络操作,提高了并发性能。`HttpAsyncClient` 类提供了异步请求的接口。 4. **Cookie 管理**:通过 `CookieSpecRegistry` 和 `CookieStore` 接口,...

    httpclient httpclient-4.3

    3. **连接超时设置**:可以设置连接建立、请求发送和响应接收的超时时间,防止请求无限等待。 4. **使用Cookie管理**:通过 `CookieStore` 和 `CookieSpec` 接口,可以管理客户端的Cookie,实现会话保持。 5. **...

    最全最新httpclient4.3.3

    2. 设置配置:可以定制重试策略、连接超时、身份验证等。 3. 创建HttpRequestBase对象:如HttpGet、HttpPost等,定义请求方法和URL。 4. 执行请求:通过HttpClient的execute()方法发送请求。 5. 处理响应:使用...

    HttpClient接口调用工具类(附带demo)

    在配置HttpClient时,可能需要设置信任的证书和密钥库。 10. **错误处理**: 工具类可能会包含对异常的捕获和处理,如网络连接失败、超时、服务器错误等,以提供更友好的错误信息。 总之,这个HttpClient工具类...

    HttpClient Demo

    HttpClient 4.3版本是该库的一个稳定版本,包含了各种优化和改进。 在HttpClient 4.3中,你可以发现以下关键知识点: 1. **基本概念**:HttpClient库主要由几个核心组件组成,如`CloseableHttpClient`(客户端实例...

    HttpClient-All-jar-4.3

    - **设置连接管理器**:例如,使用`PoolingHttpClientConnectionManager`来控制连接池的大小、超时等。 - **设置认证策略**:可以使用`BasicScheme`、`DigestScheme`等来处理不同类型的认证。 - **设置重试策略**...

    HttpClient--最全--安装包+官方文档(中文)

    6. **连接管理**:讲解如何设置连接超时、读写超时,以及连接池的配置和管理,以优化性能和资源利用。 7. **身份验证与安全性**:包括基本认证、摘要认证、NTLM认证,以及SSL/TLS的配置和证书管理。 8. **重定向...

Global site tag (gtag.js) - Google Analytics