java httpclient设置超时时间和代理的方法
作者:孙华栋 时间:2023-05-10 13:05:24
设置超时时间
设置HttpClient的超时时间,非常有必要性,因为httpclient 默认超时时间很长,自己可以测试一下是多久,设置超时时间否则会影响自己系统的业务逻辑,例如阻塞系统,影响系统的吞吐量,占用线程数。
httpclient 4.4版本之后将这些设置封装到 RequestConfig 对象里,其中 setConnectTimeout 是设置连接到目标 URL 的等待时长,超过这个时间还没连上就抛出连接超时;
setConnectionRequestTimeout 是从connect Manager(连接池)获取连接的等待时长,这个版本是共享连接池的;
setSocketTimeout 是连接到目标URL 之后等待返回响应的时长,即超过这个时间就放弃本次调用并抛出
SocketTimeoutException:Read Time Out
public 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);
}
来源:https://segmentfault.com/a/1190000021711923
标签:java,httpclient,超时时间,代理
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
android实现常驻通知栏遇到的问题及解决办法
2022-10-12 06:06:58
![](https://img.aspxhome.com/file/2023/2/139312_0s.jpg)
Android对sdcard扩展卡文件操作实例详解
2023-12-20 11:34:55
c#中task与thread区别及其使用的方法示例
2021-08-06 13:59:10
![](https://img.aspxhome.com/file/2023/7/86947_0s.jpg)
Java基础之并发相关知识总结
2022-04-24 13:59:05
![](https://img.aspxhome.com/file/2023/4/85414_0s.png)
浅谈Spring Data如何简化数据操作的方法
2023-04-19 04:50:08
C#把数组中的某个元素取出来放到第一个位置的实现方法
2021-11-26 00:17:36
Java矩阵连乘问题(动态规划)算法实例分析
2022-05-04 21:50:54
![](https://img.aspxhome.com/file/2023/8/65598_0s.jpg)
Java的JDBC中Statement与CallableStatement对象实例
2022-11-14 17:22:08
Java文件上传下载、邮件收发实例代码
2022-07-05 06:40:00
Java+Nginx实现POP、IMAP、SMTP邮箱代理服务
2023-11-26 10:31:47
![](https://img.aspxhome.com/file/2023/7/59327_0s.jpg)
android中SQLite使用及特点
2023-07-24 23:33:28
![](https://img.aspxhome.com/file/2023/5/126675_0s.png)
C#编程中使用ref和out关键字来传递数组对象的用法
2021-09-25 23:19:45
Unity实现VR中在黑板上写字效果
2021-08-04 20:11:11
![](https://img.aspxhome.com/file/2023/0/126070_0s.gif)
Android继承现有控件拓展实现自定义控件textView
2021-05-29 06:29:15
![](https://img.aspxhome.com/file/2023/3/138023_0s.png)
Android 游戏开发中绘制游戏触摸轨迹的曲线图
2023-02-26 08:50:30
Android开发手册Chip监听及ChipGroup监听
2023-03-13 01:16:36
![](https://img.aspxhome.com/file/2023/8/128988_0s.png)
android UI绘制加减号按钮
2023-09-11 02:55:28
![](https://img.aspxhome.com/file/2023/1/128981_0s.jpg)
C#获取字符串后几位数的方法
2022-06-07 21:39:33
C#利用Label标签控件模拟窗体标题的移动及窗体颜色不断变换效果
2021-06-22 16:55:51
![](https://img.aspxhome.com/file/2023/8/79038_0s.jpg)
java如何删除以逗号隔开的字符串中某一个值
2023-06-12 11:59:19
![](https://img.aspxhome.com/file/2023/8/113518_0s.png)