我有一个Web服务正在接受XML的POST方法。它工作正常,然后在某些随机情况下,无法与服务器通信,并抛出message,并抛出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);
但没有用。有人可以建议我现在可以做什么吗?
重要事项 除了弄清楚为什么我会得到例外之外,我还有一个重要的担忧是为什么重试处理程序不在这里工作?