java httpclient设置超时时间和代理的方法

网友投稿 1026 2022-12-15


java httpclient设置超时时间和代理的方法

设置超时时间

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

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

setConnectionRequestTimeo

ut 是从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)

.setConnectionRequestTimeoutSVnCCdl(6000)

.build();

return requestConfig;

}

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

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

httpPost.setConfig(requestConfig);

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:springboot整合JPA过程解析
下一篇:springboot自定义starter实现过程图解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~