XMLでPOSTメソッドを受け入れるWebサービスがあります。正常に動作している場合、ランダムな機会にサーバーとの通信に失敗し、メッセージ付きの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);
が、ダメ。誰かが私が今できることを提案できますか?
重要 なぜ例外が発生するのかを理解することに加えて、私が抱えている重要な懸念の1つは、なぜリトライハンドラーがここで機能しないのかということです。