文档章节

HttpClient 4.5版本设置连接超时时间

WalleChen
 WalleChen
发布于 2015/11/05 18:20
字数 324
阅读 21537
收藏 69

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

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

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

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


© 著作权归作者所有

共有 人打赏支持
WalleChen
粉丝 3
博文 1
码字总数 324
作品 0
海淀
项目经理
私信 提问
加载中

评论(8)

韩少主
韩少主
好好 谢谢楼主大人
M
Makit_Bei
请问API去哪找呢~~
WalleChen
WalleChen

引用来自“Paranoid-Q”的评论

使用上面的代码,发现比如请求127.0.0.1本机的某个未启动的服务,没有到超时时间就返回异常了,请问老师这是什么问题?

返回的异常是什么?这个需要具体情况具体判断。
Paranoid-Q
Paranoid-Q
使用上面的代码,发现比如请求127.0.0.1本机的某个未启动的服务,没有到超时时间就返回异常了,请问老师这是什么问题?
WalleChen
WalleChen

引用来自“bug0day”的评论

这些api以前版本就有啊么
用法不一样,功能当然是一直用的。4.4起,开始采用Fluent API,看起来好多了
bug0day
bug0day
这些api以前版本就有啊么
WalleChen
WalleChen

引用来自“yeliuping”的评论

旧的代码注释里有说明新的api类放在哪里

是有说明,但很多人只是把这个当工具用,我就总结出来了。
yeliuping
yeliuping
旧的代码注释里有说明新的api类放在哪里
解决httpclient超时设置不生效的问题

最近公司有项目需要通过http调用第三方服务,且第三方服务偶有超时,故需要设置一定的超时时间防止不响应的情况出现。 初始设置如下: [java] view plain copy //超时设置 RequestConfig re...

Mr_Tea伯奕
06/24
0
0
HttpClient4.x模拟登陆请求保护的url

请教一下各位大神。 我需要用HttpClient4.x来模拟登陆一个网站,然后再打开里面的一个链接进行数据抓取。 HttpClient的使用策略等应该是这么样设置? 我实例出来一个HttpClient之后用它进行了...

雷超林
2013/11/22
1K
3
HttpClient-4.5总结(3)

接着上一篇,我们在使用HttpClient的时候更多的是需要自己根据业务特点创建自己定制化的HttpClient实例,而不是像之前那样使用 废话不多说,直接上代码(Talk is cheap, show me the code!):...

李不言
2016/03/28
0
0
Android 浅谈HttpClient工具类

在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务。你可以把HttpClient想象成一个浏览器,通过它的...

Jonson
2013/07/25
0
3
使用单例模式实现自己的HttpClient工具类

引子 在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务。你可以把HttpClient想象成一个浏览器,通过...

moz1q1
2015/04/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud Consul综合整理

部分资料来自 该项目通过自动配置和Spring环境以及其他Spring编程模型习惯用法提供了Spring Boot应用程序的Consul集成。 通过一些简单的注释,您可以快速启用和配置应用程序内的通用模式,并...

Gm_ning
5分钟前
0
0
Springboot 2.0 - 集成redis

最近在入门SpringBoot,然后在感慨 SpringBoot较于Spring真的方便多时,顺便记录下自己在集成redis时的一些想法。 从springboot官网查看redis的依赖包 <dependency>           ...

别打我会飞
6分钟前
0
0
支付宝APP支付申请配置过程详解

第一步:你需要申请一个支付宝商家账户账号,登陆之后进入产品中心,进行APP支付产品接入,填写相关资料,等待审核。 第二步:进行APP支付申请信息完善 第三步:进入蚂蚁金服开放平台进行开发...

Code辉
10分钟前
0
0
避免过度同步(67)

过度使用同步会导致性能低下、死锁或其他不确定问题 在一个同步方法或代码块中,不要放弃对客户端的控制 即:在一个同步区域内部,不要调用被覆盖方法,或者是传入对象提供的方法 这些外来方...

Java搬砖工程师
10分钟前
0
0
Java获取文件类型/扩展名

import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.util.HashMap;import java.util.Map;public class FileTypeUtils { private fi......

Hzhodor
14分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部