java中怎么利用httpclient设置超时时间

发布时间:2021-07-23 14:04:10 作者:Leah
来源:亿速云 阅读:217

java中怎么利用httpclient设置超时时间,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

设置超时时间

设置HttpClient的超时时间,非常有必要性,因为httpclient 默认超时时间很长,自己可以测试一下是多久,设置超时时间否则会影响自己系统的业务逻辑,例如阻塞系统,影响系统的吞吐量,占用线程数。

httpclient 4.4版本之后将这些设置封装到 RequestConfig 对象里,其中 setConnectTimeout 是设置连接到目标 URL 的等待时长,超过这个时间还没连上就抛出连接超时;

setConnectionRequestTimeout 是从connect Manager(连接池)获取连接的等待时长,这个版本是共享连接池的;

setSocketTimeout 是连接到目标URL 之后等待返回响应的时长,即超过这个时间就放弃本次调用并抛出

SocketTimeoutException:Read Time Outpublic static RequestConfig getRequestConfig(){    RequestConfig requestConfig = RequestConfig.custom()        .setConnectTimeout(10000)        .setSocketTimeout(10000)        .setConnectionRequestTimeout(6000)        .build(); return requestConfig;  }

设置代理

有时候我们线上访问外部第三方的接口的时候,不想暴露真实机器的IP,或者我们的机器不能访问外网的时候,我们可以通过代理服务器来访问,代理服务器充当内网与外网链接的中间人。

httpclient 4.4后设置代理的 IP、端口被封装到 RequestConfig 对象里,通过 HttpHost 对象封装代理的 IP、端口和协议。

这里需要注意的一点是,如果你的目标 URL 是 HTTP 协议的,那么你的代理也应该是 HTTP 协议的,如下 HttpHost 的构造方法可以指定代理服务的协议,不传默认为 HTTP。

public static RequestConfig getRequestConfig(){    HttpHost proxy = new HttpHost("代理ip",8080,"HTTP");//代理    RequestConfig requestConfig = RequestConfig.custom()        .setProxy(proxy)        .setConnectTimeout(10000)        .setSocketTimeout(10000)        .setConnectionRequestTimeout(6000)        .build();    return requestConfig;  }

然后通过 HttpPost 或 HttpGet 的setConfig()方法使其应用到该 config。

HttpPost httpPost = new HttpPost(url); if(null != requestConfig){  httpPost.setConfig(requestConfig);}

关于java中怎么利用httpclient设置超时时间问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. php脚本超时时间设置
  2. 怎么设置session的超时时间

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java httpclient

上一篇:sql语句中where和having的区别是什么

下一篇:bootstrap中如何实现动态加载下拉框

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》