2017-10-10 44 views
0

我遇到了HttpClient的問題,它在發生異常後沒有對服務器進行任何嘗試。HttpClient在異常後不會重試

我已初步使用CloseableHttpClient建立連接,什麼我發現是,它throughing IOException異常不時。 這可能是由於不同的原因,但我認爲客戶端會嘗試連接到服務器幾次。但似乎並非如此。 我的理解是,CloseableHttpClient在執行語句和/或發生異常之後關閉連接,因此沒有重試。

我看着HttpClient的及文檔中它指出自動重試時,客戶端無法建立連接

每默認的HttpClient會自動嘗試從 不是致命的恢復發生錯誤,即拋出普通IOException時。 如果請求 從未完全傳輸到目標服務器,HttpClient將重試該方法三次。有關HTTP方法恢復的詳細 討論,請參閱HttpClient的 異常處理指南

所以,如果一個IOException發生,應該有更多的嘗試。

我應該使用什麼方法來確保當客戶端嘗試與服務器建立連接時,如果嘗試失敗,它會再嘗試幾次?

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

回答