Ich habe einen Webservice, der eine POST-Methode mit XML akzeptiert. Es funktioniert einwandfrei, dann kann es gelegentlich nicht mit dem Server kommunizieren, der eine IOException mit einer Nachricht auslöst The target server failed to respond
. Die nachfolgenden Aufrufe funktionieren einwandfrei.
Es passiert meistens, wenn ich ein paar Anrufe tätige und dann meine Anwendung für etwa 10-15 Minuten im Leerlauf lasse. Der erste Aufruf, den ich danach tätige, gibt diesen Fehler zurück.
Ich habe ein paar Dinge ausprobiert ...
Ich richte den Retry-Handler wie ein
HttpRequestRetryHandler retryHandler = new HttpRequestRetryHandler() {
public boolean retryRequest(IOException e, int retryCount, HttpContext httpCtx) {
if (retryCount >= 3){
Logger.warn(CALLER, "Maximum tries reached, exception would be thrown to outer block");
return false;
}
if (e instanceof org.apache.http.NoHttpResponseException){
Logger.warn(CALLER, "No response from server on "+retryCount+" call");
return true;
}
return false;
}
};
httpPost.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, retryHandler);
aber dieser Wiederholungsversuch wurde nie aufgerufen. (Ja, ich verwende die richtige Instanz der Klausel). Beim Debuggen wird diese Klasse niemals aufgerufen.
Ich habe sogar versucht, es einzurichten, HttpProtocolParams.setUseExpectContinue(httpClient.getParams(), false);
aber es nützt nichts. Kann jemand vorschlagen, was ich jetzt tun kann?
WICHTIG Neben der Frage, warum ich die Ausnahme bekomme, ist eines der wichtigsten Anliegen, warum der Retryhandler hier nicht arbeitet.