2014-03-27 70 views
0

這是我測試的場景。其步驟如下HttpClient中的連接重置錯誤

  1. 創建一個HttpClient(org.apache.commons.httpclient.HttpClient)3.1
  2. 實例使用實例獲取某個URL響應(http://www.example.com/submitData
  3. 關閉服務器託管在步驟2中
  4. 提到的網址調出URL
  5. 等到網址已
  6. 使用的HttpClient在步驟1中創建來從URL響應實例(http://www.example.com/getData

我收到一個錯誤 - 連接重置。 任何人都可以幫助我理解。

我已經使用了以下PARAMS在HttpClient的

httpClient.getParams().setParameter("http.socket.timeout", new Integer(0)); 
    httpClient.getParams().setParameter("http.connection.stalecheck", new Boolean(true)); 

從彼得 意見後編輯這是我如何創建HttpClient的

HttpClient httpClient = new HttpClient(); 
AuthScope authScope = new AuthScope("www.example.com", 80, AuthScope.ANY_REALM); 
Credentials defaultcreds = new UsernamePasswordCredentials("username", "pwd"); 
httpClient.getState().setCredentials(authScope, defaultcreds); 
httpClient.getParams().setParameter("http.socket.timeout", new Integer(0)); 
httpClient.getParams().setParameter("http.connection.stalecheck", new Boolean(true)); 

建立連接,我用下面的

GetMethod getMethod = new GetMethod("http://"+httpClient.getHostConfiguration().getHost()+"/getData"); 
int statusCode = httpClient.executeMethod(getMethod); 

我想要httpclient實例到pr保留主機名和端口和憑證。

這是我得到的確切的執行消息 - 「連接重置」。

更多信息 - 我正在執行eclipse的測試。如果我在調試模式下運行測試用例,我不會得到這個異常。

回答

1

我認爲這種行爲是合理的,因爲當服務器關閉時,服務器上的客戶端套接字也會消失。客戶端仍然保存舊套接字,但該套接字在服務器上不存在。你應該從客戶端重新連接。

AFAIK stale參數允許客戶端以乾淨的方式關閉連接(無例外),但不防止斷開。

+0

但我不想持續與該網址的任何連接。 HttpClient所做的調用是REST調用,我只需要HttpClient對象來保存像主機和端口這樣的數據。 – BKSingh

+0

那麼告訴我們如何實例化HttpClient並打開連接。 – PeterMmm

+0

我修改了問題以反映創建HttpClient實例所涉及的步驟。 – BKSingh

相關問題