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

gnu*_*ger 5 java timeout httpsurlconnection

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

URL url = new URL("service/url");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setConnectionTimeout(300000);
connection.setReadTimeout(300000);
parse (connection.getInputStream());
Run Code Online (Sandbox Code Playgroud)

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

我正在使用 Java 1.6

更新
我尝试了 connect() 和 getResponseCode() 而不是 getInputStream() 但相同的行为:

URL url = new URL("service/url");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setConnectionTimeout(300000);
connection.setReadTimeout(300000);
connection.connect();
connection.getResponseCode();
Run Code Online (Sandbox Code Playgroud)

即使这是提出 2 个请求。

更新
HttpClient修复了该问题。在 HttpClient 中,您可以明确地将重试设置为 false

Ted*_*pin 2

您不应该打电话,openConnection()connect()应该打电话openConnection()