2013-03-28 79 views
0

今天我正在開發一個Java RMI服務器(也是客戶端),它從頁面獲取信息並返回我想要的內容。我把代碼放在這裏。問題是,有時我傳遞給方法的URL會拋出一個IOException,它說明給定的url會導致503 HTTP錯誤。如果它總是這樣,可能會很容易,但事情有時會出現。 我有這種方法結構,因爲我解析的頁面來自天氣公司,我希望來自多個城市的信息,不僅僅是一個,所以一些城市在第一次機會時完美地工作,而其他一些城市則失敗。有什麼建議麼?HTTP中的頁面解析期間的HTTP錯誤503

public ArrayList<Medidas> parse(String url){ 
     medidas = new ArrayList<Medidas>(); 
     int v=0; 

      String sourceLine; 
      String content = ""; 
     try{ 
      // The URL address of the page to open. 

      URL address = new URL(url); 

      // Open the address and create a BufferedReader with the source code. 
      InputStreamReader pageInput = new InputStreamReader(address.openStream()); 
      BufferedReader source = new BufferedReader(pageInput); 

      // Append each new HTML line into one string. Add a tab character. 
      while ((sourceLine = source.readLine()) != null){ 
       if(sourceLine.contains("<tbody>")) v=1; 
       else if (sourceLine.contains("</tbody>")) 
        break; 
       else if(v==1) 
        content += sourceLine + "\n"; 
      } 
     ........................ 
     ........................ NOW THE PARSING CODE, NOT IMPORTANT 
    } 

回答

0

HTTP 500錯誤反映了服務器錯誤,所以它可能與您的客戶端代碼無關。 如果您的請求傳遞了無效參數,則會出現400錯誤。

503是「服務不可用」,並且可能在服務器超載且無法處理您的請求時由服務器發送。從可公開訪問的服務器,可以解釋不規律的行爲。

編輯

建立在你的代碼中的重傳處理器,當您發現503阿帕奇HTTPClient可以自動爲你做到這一點。

List of HTTP Status Codes

+0

完成,這不是我的錯。今天一切正常,我認爲頁面服務器已被修復。謝謝 – antonbalboa 2013-03-28 15:16:02

0
  1. 檢查IOException異常是真的不MalformedURLException類。嘗試打印出URL以驗證錯誤的URL不會導致IOException。
  2. 你解析的文件有多大?也許你的JVM內存不足。
+0

我認爲這不是因爲它有時起作用,有的則不起作用。該頁面大約55000個字符,所以我認爲這不是問題 – antonbalboa 2013-03-28 01:07:54

+0

你如何將'String url'傳遞給方法?請提供示例網址。 – Jason 2013-03-28 01:10:06

+0

哪一行拋出IOException? – Jason 2013-03-28 01:18:10

相關問題