J'ai un webservice qui accepte une méthode POST avec XML. Il fonctionne bien puis, à un moment donné, il ne parvient pas à communiquer avec le serveur en lançant une IOException avec le message suivant The target server failed to respond
. Les appels suivants fonctionnent bien.
Cela se produit surtout lorsque je fais quelques appels et que je laisse mon application inactive pendant 10 à 15 minutes. Le premier appel que je fais ensuite renvoie cette erreur.
J'ai essayé plusieurs choses...
J'ai configuré le gestionnaire de réessai comme suit
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);
mais cette nouvelle tentative n'a jamais été appelée. (oui, j'utilise la bonne clause instanceof). Pendant le débogage, cette classe n'a jamais été appelée.
J'ai même essayé de mettre en place HttpProtocolParams.setUseExpectContinue(httpClient.getParams(), false);
mais sans utilité. Quelqu'un peut-il me suggérer ce que je peux faire maintenant ?
IMPORTANT Outre le fait de comprendre pourquoi je reçois l'exception, l'une des préoccupations importantes que j'ai est de savoir pourquoi le retryhandler ne fonctionne pas ici ?