De retenter une connexion http
Je suis en train de faire une requête http. Je suis sur une plateforme (android) où les opérations de réseau échouent souvent parce que la connexion réseau peut ne pas être immédiatement disponible. Donc j'aimerais essayer de faire la même connexion N fois avant d'être complètement défaut. Pensais à quelque chose comme ceci:
DefaultHttpClient mHttp = ...;
public HttpResponse runHttpRequest(HttpRequestBase httpRequest)
throws IOException
{
IOException last = null;
for (int attempt = 0; attempt < 3; attempt++) {
try {
HttpResponse response = mHttpClient.execute(httpRequest);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 200) {
return response;
}
} catch (IOException e) {
httpRequest.abort();
last = e;
}
}
throw last;
}
Je suis surtout inquiet au sujet de la connexion dans un état qui n'est pas valide sur les tentatives suivantes. En d'autres termes, dois-je recréer complètement 'httpRequest', dois-je éviter d'appeler httpRequest.abort() dans le bloc catch, et seulement l'appeler dans la rupture finale?
Grâce
OriginalL'auteur user291701 | 2010-10-14
Vous devez vous connecter pour publier un commentaire.
La documentation ne mentionne pas qu'une telle chose se produire, mais vous devez l'essayer. Plus important encore, cependant, il ya certaines choses que vous devriez considérer dans votre code...
OriginalL'auteur Michael Aaron Safyan
Un HttpRequestRetryHandler semble comme il pourrait être utile ici.
OriginalL'auteur BenV
Je vous recommande d'utiliser des AOP et des annotations Java à partir de jcabi-aspects (je suis développeur):
OriginalL'auteur yegor256