java httpclient設置超時時間和代理的方法
設置超時時間
設置HttpClient的超時時間,非常有必要性,因為httpclient 默認超時時間很長,自己可以測試一下是多久,設置超時時間否則會影響自己系統(tǒng)的業(yè)務邏輯,例如阻塞系統(tǒng),影響系統(tǒng)的吞吐量,占用線程數(shù)。
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,或者我們的機器不能訪問外網(wǎng)的時候,我們可以通過代理服務器來訪問,代理服務器充當內網(wǎng)與外網(wǎng)鏈接的中間人。
httpclient 4.4后設置代理的 IP、端口被封裝到 RequestConfig 對象里,通過 HttpHost 對象封裝代理的 IP、端口和協(xié)議。
這里需要注意的一點是,如果你的目標 URL 是 HTTP 協(xié)議的,那么你的代理也應該是 HTTP 協(xié)議的,如下 HttpHost 的構造方法可以指定代理服務的協(xié)議,不傳默認為 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);
}
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
解決springboot?druid數(shù)據(jù)庫連接池連接失敗后一直重連問題
這篇文章主要介紹了解決springboot?druid數(shù)據(jù)庫連接池連接失敗后一直重連問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11
IDEA查看所有的斷點(Breakpoints)并關閉的方式
我們在使用IDEA開發(fā)Java應用時,基本上都需要進行打斷點的操作,這方便我們排查BUG,也方便我們查看設計的是否正確,不過有時候,我們不希望進入斷點,所以我們需要快速關閉所有斷點,故本文給大家介紹了IDEA查看所有的斷點(Breakpoints)并關閉的方式2024-10-10
spring中使用@Autowired注解無法注入的情況及解決
這篇文章主要介紹了spring中使用@Autowired注解無法注入的情況及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
SpringBoot中讀取application.properties配置文件的方法
這篇文章主要介紹了SpringBoot中讀取application.properties配置文件的三種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2023-02-02
深入解析StringBuffer和StringBuilder的區(qū)別
以下是對java中StringBuffer與StringBuilder的區(qū)別進行了詳細的分析介紹,需要的朋友可以參考下2013-07-07
基于Docker的K8s(Kubernetes)集群部署方案
這篇文章主要介紹了基于Docker的K8s(Kubernetes)集群部署方案,文中介紹了安裝k8s的可視化界面的相關操作,需要的朋友可以參考下2024-01-01

