java httpclient设置超时时间和代理的方法
设置超时时间
设置HttpClient的超时时间,非常有必要性,因为httpclient默认超时时间很长,自己可以测试一下是多久,设置超时时间否则会影响自己系统的业务逻辑,例如阻塞系统,影响系统的吞吐量,占用线程数。
httpclient4.4版本之后将这些设置封装到RequestConfig对象里,其中setConnectTimeout是设置连接到目标URL的等待时长,超过这个时间还没连上就抛出连接超时;
setConnectionRequestTimeout是从connectManager(连接池)获取连接的等待时长,这个版本是共享连接池的;
setSocketTimeout是连接到目标URL之后等待返回响应的时长,即超过这个时间就放弃本次调用并抛出
SocketTimeoutException:ReadTimeOut publicstaticRequestConfiggetRequestConfig(){ RequestConfigrequestConfig=RequestConfig.custom() .setConnectTimeout(10000) .setSocketTimeout(10000) .setConnectionRequestTimeout(6000) .build();returnrequestConfig; }
设置代理
有时候我们线上访问外部第三方的接口的时候,不想暴露真实机器的IP,或者我们的机器不能访问外网的时候,我们可以通过代理服务器来访问,代理服务器充当内网与外网链接的中间人。
httpclient4.4后设置代理的IP、端口被封装到RequestConfig对象里,通过HttpHost对象封装代理的IP、端口和协议。
这里需要注意的一点是,如果你的目标URL是HTTP协议的,那么你的代理也应该是HTTP协议的,如下HttpHost的构造方法可以指定代理服务的协议,不传默认为HTTP。
publicstaticRequestConfiggetRequestConfig(){ HttpHostproxy=newHttpHost("代理ip",8080,"HTTP");//代理 RequestConfigrequestConfig=RequestConfig.custom() .setProxy(proxy) .setConnectTimeout(10000) .setSocketTimeout(10000) .setConnectionRequestTimeout(6000) .build(); returnrequestConfig; }
然后通过HttpPost或HttpGet的setConfig()方法使其应用到该config。
HttpPosthttpPost=newHttpPost(url);if(null!=requestConfig){ httpPost.setConfig(requestConfig); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。