2013-03-28 77 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

相关问题