У меня есть веб-сервис, который принимает метод POST с XML. Затем он работает нормально, в некоторый случайный случай, он не может связаться с сервером, выдавая IOException с сообщением The target server failed to respond
. Последующие звонки работают нормально.
В основном это происходит, когда я делаю несколько звонков, а затем оставляю свое приложение без дела около 10-15 минут. первый звонок, который я делаю после этого, возвращает эту ошибку.
Я попробовал пару вещей...
Я настраиваю обработчик повторов как
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);
но эта повторная попытка не была вызвана. (да, я использую правильное предложение instanceof). При отладке этот класс никогда не вызывается.
Я даже пытался настроить HttpProtocolParams.setUseExpectContinue(httpClient.getParams(), false);
но бесполезно. Может кто-нибудь подсказать, что я могу сделать сейчас?
ВАЖНО Помимо выяснения, почему я получаю исключение, одна из важных проблем, с которыми я сталкиваюсь, заключается в том, почему здесь не работает retryhandler?