2012-09-11 61 views
2

我使用HttpsURLConnection的像下面的代碼進行服務請求到服務器:HttpsURLConnection.getInputStream()是否會自動重試?

URL url = new URL("service/url"); 
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); 
connection.setConnectionTimeout(300000); 
connection.setReadTimeout(300000); 
parse (connection.getInputStream()); 

服務有時可能需要更長的時間,所以最好我應該期待一個超時異常,而是客戶正在重試和發送再次請求相同的請求。有沒有辦法明確禁用任何類型的重試?我甚至不確定設置的超時方法是否有所作爲。

我使用Java 1.6

UPDATE
我嘗試connect()和getResponseCode()代替的getInputStream(),但相同的行爲:

URL url = new URL("service/url"); 
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); 
connection.setConnectionTimeout(300000); 
connection.setReadTimeout(300000); 
connection.connect(); 
connection.getResponseCode(); 

即使這是使2個請求。

UPDATE
HttpClient修復了這個問題。在HttpClient中,您可以明確設置重試爲false

+0

你是如何推斷它正在重試? – gammay

+0

2個完全相同的請求在服務器日誌中出現。由於重複請求,請求失敗。 – gnuger

+0

請使用[fiddler](http://www.fiddler2.com/fiddler2/)這樣的工具來檢查這是否是客戶端問題。 – gammay

回答

0

您不應該調用openConnection()connect(),只需致電openConnection()即可。

相關問題