HttpsURLConnection.getInputStream()是否自动重试?

时间:2012-09-11 06:28:38

标签: java timeout httpsurlconnection

我正在使用HttpsURLConnection向服务器发出服务请求,如下面的代码:

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

服务有时可能需要更长的时间,所以理想情况下我应该期待TimeOut异常,但客户端正在重试并再次发送相同的请求。有没有办法明确禁用任何类型的重试?我甚至不确定设置的超时方法是否有任何区别。

我正在使用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

1 个答案:

答案 0 :(得分:1)

您不应该致电openConnection()connect(),只需致电openConnection()