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
你是如何推斷它正在重試? – gammay
2個完全相同的請求在服務器日誌中出現。由於重複請求,請求失敗。 – gnuger
請使用[fiddler](http://www.fiddler2.com/fiddler2/)這樣的工具來檢查這是否是客戶端問題。 – gammay