這篇文章主要介紹了java中httpclient如何設置超時時間和代理,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
Java是一門面向對象編程語言,可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序。
設置超時時間
設置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如何設置超時時間和代理”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。