在Apache的HttpClient包中,有三個設置超時的地方:
/* 從連接池中取連接的超時時間*/ ConnManagerParams.setTimeout(params, 1000); /*連接超時*/ HttpConnectionParams.setConnectionTimeout(params, 2000); /*請求超時*/ HttpConnectionParams.setSoTimeout(params, 4000);
第一,ConnectionPoolTimeout:
定義了從ConnectionManager管理的連接池中取出連接的超時時間。
出錯會拋出ConnectionPoolTimeoutException
第二,ConnectionTimeout:
定義了通過網絡與server建立連接的超時時間,Httpclient包中通過一個異步線程去創建與server的socket連接,這就是該socket連接的超時時間。
當連接HTTPserver或者等待HttpConnectionManager管理的一個有效連接超時出錯會拋出ConnectionTimeoutException
第三,SocketTimeout:
這定義了Socket讀數據的超時時間,即從server獲取響應數據須要等待的時間。
當讀取或者接收Socket超時會拋出SocketTimeoutException