我正在使用HttpsURLConnection向服务器发出服务请求,如下代码所示:
URL url = new URL("service/url");
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setConnectionTimeout(300000);
connection.setReadTimeout(300000);
parse (connection.getInputStream());
服务有时可能需要更长的时间,所以理想情况下我应该期待超时异常,但客户端正在重试并再次发送相同的请求。有没有办法明确禁止任何类型的重试?我甚至不确定设置的超时方法是否有任何不同。
我正在使用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();
即使是这样,也要发出2个请求。
更新
HttpClient修复了该问题。在HttpClient中,您可以显式地将retry设置为false
您不应该调用openConnection()
和connect()
,只需调用openConnection()
即可。