2009-07-27 9 views
4

La documentation (copiée ci-dessous) ne dit pas grand-chose sur ce que signifie IOException et HttpException dans son contexte. Ma question est la suivante: après une IOException se produit dans une méthode HttpClient.execute (HttpMethod), dois-je jeter l'objet et créer un nouveau HttpClient afin d'exécuter à nouveau des méthodes? Ou est-il encore utilisable (l'objet HttpClient) pour exécuter des méthodes après que certaines de ces exceptions se produisent?Comment gérer IOException et HttpException dans Apache HttpClient.execute (HttpMethod)

 
executeMethod 

public int executeMethod(HttpMethod method) 
        throws IOException, 
         HttpException 
Executes the given HTTP method. 
Parameters: 
method - the HTTP method to execute. 
Returns: 
the method's response code 
Throws: 
IOException - If an I/O (transport) error occurs. Some transport exceptions can be recovered from. 
HttpException - If a protocol exception occurs. Usually protocol exceptions cannot be recovered from. 

Répondre

4

Vous pouvez réutiliser l'objet HttpClient autant de fois que vous le souhaitez. Je travaille avec la version 3.0, et je ne peux pas dire si cela a changé ou non dans les versions plus récentes.

En ce qui concerne les exceptions, les commentaires sont dirigés plus sur le HttpMethod que le client. Qu'est-ce que cela signifie par «Certaines exceptions de transport peuvent être récupérées à partir de», c'est que vous pouvez être en mesure de renvoyer la demande et obtenir une réponse valide. IOExceptions ont tendance à se produire lorsque vous ne pouvez pas envoyer une demande ou ne recevez pas de réponse du serveur (par exemple, le serveur est en panne ou il ne peut pas gérer toutes les demandes qu'il reçoit). Qu'est-ce que cela signifie par «Généralement, les exceptions de protocole ne peuvent pas être récupérées à partir de», c'est que le serveur sur lequel vous effectuez une requête HTTP n'envoie pas de réponse répondant au (x) protocole (s) HTTP. Habituellement, renvoyer la requête ne donnera pas un résultat différent.

Je réalise que cette réponse est probablement un peu tardive pour vous être utile, mais les futurs lecteurs pourraient en bénéficier.

Ceci est a useful guide on exception handling avec HttpClient (versions héritées de toute façon). Il peut se déplacer, alors voici un useful search pour trouver la page.