java httpclient通過RequestConfig設置http請求響應時間


調用HTTP接口時,設置請求超時時間,通過RequestConfig設置。

查看源碼,

// -1:永不超時
private int connectionRequestTimeout = -1;
private int connectTimeout = -1;
private int socketTimeout = -1;

Builder(org.apache.http.client.config.RequestConfig.Builder) 

是RequestConfig(org.apache.http.client.config.RequestConfig) 

的內部類,專門用於創建RequestConfig

 

HttpPost httpPost = new HttpPost(reqURL)

Builder customReqConf = RequestConfig.custom();
customReqConf.setConnectTimeout(2000);
customReqConf.setSocketTimeout(2000);
customReqConf.setConnectionRequestTimeout(3000);

httpPost.setConfig(customReqConf.build());

 

 

HttpClient內部有三個超時時間設置:連接池獲取可用連接超時,連接超時,讀取數據超時 

1.從連接池中獲取可用連接超時 

HttpClient中的要用連接時嘗試從連接池中獲取,若是在等待了一定的時間后還沒有獲取到可用連接(比如連接池中沒有空閑連接了)則會拋出獲取連接超時異常。

2.連接目標超時connectionTimeout

 指的是連接目標url的連接超時時間,即客服端發送請求到與目標url建立起連接的最大時間。如果在該時間范圍內還沒有建立起連接,則就拋出connectionTimeOut異常。
 如測試的時候,將url改為一個不存在的url:“http://test.com” ,超時時間3000ms過后,系統報出異常:    org.apache.commons.httpclient.ConnectTimeoutException:The host did not accept the connection within timeout of 3000 ms 

3.等待響應超時(讀取數據超時)socketTimeout 

連接上一個url后,獲取response的返回等待時間 ,即在與目標url建立連接后,等待放回response的最大時間,在規定時間內沒有返回響應的話就拋出SocketTimeout。

測試時,將socketTimeout 設置很短,會報等待響應超時。

 

參考博客:https://blog.csdn.net/a1165117473/article/details/84105301


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM