2017-10-10 16 views
0

例外が発生した後でHttpClientでこの問題が発生しました。例外の発生後にHttpClientが再試行しません。

私が最初に接続を確立するためにCloseableHttpClientを使用し、どのような私が見つけたことは、それは時からのIOExceptionをthroughingたということでしたしています。 これはさまざまな理由が考えられますが、クライアントはサーバーに数回接続しようとします。しかし、それはそうではないようです。 私は、CloseableHttpClientは、ステートメントが実行された後、および/または例外が発生したために接続を閉じ、したがって再試行がないことを理解しています。

は私が見HttpClientをとドキュメントでは、クライアントが自動的に -致命的ではないから回復しようとする接続のデフォルトのHttpClientパー

を確立できない場合に自動リトライが発生したと述べていますエラー、つまり、単純なIOExceptionがスローされたとき HttpClientは、要求 がターゲットサーバーに完全に送信されたことがない場合、3回メソッドを再試行します。 HTTPメソッドの回復に関する詳細な議論は

そうにIOExceptionが発生した場合のHttpClient 例外処理ガイドを参照してくださいについては、多くの試みがあるはずです。

クライアントがサーバーとの接続を確立しようとすると、失敗したときに何度か試行する必要がありますか?

private Map<String, String> queryResults(String query) throws OrnClientException { 

     try { 
      HttpResponse response = httpClient.execute(new HttpGet(concatURL)); 
      final String result = EntityUtils.toString(response.getEntity()); 
      return extractMapFromQueryResults(result); 
     } catch (IOException e) { 

     } 
    } 

httpClient.execute(新しいHTTPGET(concatURL))。

ここで、IOExceptionが発生します。

+0

あなたの質問に関連するコードはどこですか? – Alfabravo

+0

私の投稿を更新しました – Sgr

答えて

0

私はこれがない1デフォルトの例外の限り、あなたの要求にあなたがそれを設定した回数を再試行する必要があり、あなたのクライアントを作成するときにDefaultHttpRequestRetryHandler

を使用することを示唆しています。

関連する問題