java httpclient超时时间和代理 java httpclient设置超时时间和代理的方法
孙华栋 人气:0设置超时时间
设置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); }
您可能感兴趣的文章:
- Java httpClient介绍以及使用示例
- Java11新特性之HttpClient小试牛刀
- java使用common-httpclient包实现post请求方法示例
- JAVA通过HttpClient发送HTTP请求的方法示例
- JAVA利用HttpClient进行HTTPS接口调用的方法
- java web中 HttpClient模拟浏览器登录后发起请求
- Java爬虫Jsoup+httpclient获取动态生成的数据
- JAVA利用HttpClient进行POST请求(HTTPS)实例
- 使用java的HttpClient实现多线程并发
- Java利用HttpClient模拟POST表单操作应用及注意事项
- Java HttpClient实现socks代理的示例代码
加载全部内容