Wiederholung einer http-Verbindung
Ich bin eine http-Anfrage. Ich bin auf einer Plattform (android), wo die Netzwerk-Operationen oft nicht, weil die Netzwerkverbindung ist möglicherweise nicht sofort verfügbar. Daher möchte ich versuchen, die gleiche Verbindung N-mal, bevor Sie komplett Versagen. Dachte an so etwas wie dieses:
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;
}
Meistens bin ich besorgt über die Verbindung, wenn man in einem Staat, der ungültig ist, nachfolgenden Wiederholungen. In anderen Worten, muss ich die komplett neu erstellen 'httpRequest', sollte ich vermeiden, fordern httpRequest.abort() in den catch-block, und nur nennen Sie es in das endgültige scheitern?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Dokumentation nicht erwähnt, dass so etwas auftreten wird, obwohl Sie haben würde, es zu versuchen. Was jedoch noch wichtiger ist, es gibt einige Dinge, die Sie berücksichtigen sollten mit Ihrem code...
Einen HttpRequestRetryHandler wie es scheint, könnte hier hilfreich sein.
Ich würde empfehlen die Verwendung von AOP-und Java-Annotationen aus jcabi-Aspekte (ich bin Entwickler):