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