2009-12-17 106 views
3

我在Apache中HttpClient是新的,我用下面的代碼一定的時間間隔後得到HTTP連接超時(斷開):如何在一段時間間隔後使HTTP連接超時/斷開連接?

PostMethod method = new PostMethod(authURL); 
HttpClient client = new HttpClient(); 
HttpClientParams params= new HttpClientParams(); 
params.setParameter(params.CONNECTION_MANAGER_TIMEOUT, 10); //10 Nano second 
client.executeMethod(method); 

,但等待一分鐘以上沒有任何希望超時/斷開?問題在哪裏?

回答

4

有參與了HTTPClient 2個超時,嘗試設置兩個,

client.getHttpConnectionManager(). 
     getParams().setConnectionTimeout(5000); 
    client.getHttpConnectionManager(). 
     getParams().setSoTimeout(5000); 

但是,值將被連接是否停留在本地套接字調用忽略。所以你可能不得不在另外一個線程中運行這個請求,這樣你就可以記錄下來。見我的回答就怎麼辦這個問題,

java native Process timeout

+0

謝謝,它的工作:) – mebada 2009-12-21 16:54:35

0

你看過設置SO_TIMEOUT

設置插座超時(SO_TIMEOUT) 以毫秒爲單位的時候執行該方法 可以使用。零的超時值 被解釋爲無限的 超時。

1

當嘗試從連接管理器獲取連接的操作花費太長時間時,會觸發連接管理器超時。這與http連接本身的超時不一樣。改爲使用HttpClientParams.setSoTimeout()。

http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/params/HttpMethodParams.html#setSoTimeout%28int%29

+0

感謝您的回覆,,, 我曾嘗試HttpClientParams.setSoTimeout(),但問題仍然存在,NY更多建議,,,, – mebada 2009-12-17 23:09:07

相關問題