2012-09-11 1 views
2

Je fais une demande de service à un serveur en utilisant HttpsURLConnection comme le code ci-dessous:HttpsURLConnection.getInputStream() effectue-t-il des tentatives automatiques?

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

service parfois peut prendre plus de temps, donc idéalement je devrais attendre une exception TimeOut mais le client fait une nouvelle tentative et l'envoi la même demande à nouveau. Y at-il un moyen de désactiver explicitement tout type de tentatives? Et je ne suis même pas sûr si les méthodes de délai d'attente font une différence.

J'utilise Java 1.6

MISE À JOUR
J'ai essayé connect() et getResponseCode() au lieu de getInputStream(), mais même comportement:

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

même ce fait 2 demandes.

MISE À JOUR
HttpClient a résolu le problème. Dans HttpClient vous pouvez explicitement définir de réessayer à false

+0

Comment avez-vous déduit qu'il réessaie? – gammay

+0

2 exactement les mêmes demandes sont à venir dans les journaux du serveur. Et la demande échoue en raison d'une demande en double. – gnuger

+0

Veuillez utiliser un outil comme [fiddler] (http://www.fiddler2.com/fiddler2/) pour vérifier s'il s'agit d'un problème côté client. – gammay

Répondre

0

Vous ne devriez pas appeler openConnection() et connect(), il suffit d'appeler openConnection().