2017-10-10 4 views
0

Ich habe dieses Problem mit dem HttpClient, wo es keinen Versuch auf dem Server versucht, nachdem eine Ausnahme aufgetreten ist.HttpClient versucht nicht nach Ausnahme

Ich habe zunächst CloseableHttpClient, um eine Verbindung verwendet, und was ich fand, war, dass es throughing IOException von Zeit zu Zeit. Das könnte verschiedene Gründe haben, aber ich dachte, dass der Client versuchen wird, sich einige Male mit dem Server zu verbinden. Dies schien jedoch nicht der Fall zu sein. Mein Verständnis ist, dass CloseableHttpClient die Verbindung schließt, nachdem die Anweisung ausgeführt wurde und/oder eine Ausnahme aufgetreten ist und daher keine Wiederholungen auftreten.

schaute ich auf die Httpclient und in der Dokumentation heißt es, dass automatische Wiederholungen auftreten, wenn der Client keine Verbindung

Per Default Httpclient etablieren wird automatisch aus dem nicht-tödlicher zu erholen versuchen, Fehler, das heißt, wenn eine einfache IOException ausgelöst wird. HttpClient wiederholt die Methode dreimal, vorausgesetzt, die Anforderung wurde noch nie vollständig an den Zielserver übertragen. Für eine detaillierte Diskussion über HTTP-Methode Wiederherstellung der Httpclient Ausnahmebehandlung Anleitung finden Sie

Also, wenn eine IOException aufgetreten ist, sollte es mehr versucht sein.

Welchen Ansatz sollte ich verwenden, um sicherzustellen, dass, wenn der Client versucht, eine Verbindung mit dem Server herzustellen, bei einem Fehler ein paar Mal mehr versucht wird?

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 (new HttpGet (concatURL));

Hier bekomme ich die IOException.

+0

Wo ist der Code zu Ihrer Frage? – Alfabravo

+0

Ich habe meinen Beitrag aktualisiert – Sgr

Antwort

0

Ich schlage vor, dass, wenn Sie Ihren Kunden Sie dieses DefaultHttpRequestRetryHandler

verwenden erstellen sollen Ihre Anfrage die Anzahl der Male wiederholen Sie es einrichten, solange es nicht eine der Standard Ausnahmen.

Verwandte Themen