0

今天我正在开发一个 java RMI 服务器(以及客户端),它从页面获取信息并返回我想要的内容。我把代码放在这里。问题是有时我传递给该方法的 url 会抛出一个 IOException,表示给定的 url 会产生 503 HTTP 错误。如果它总是这样可能很容易,但问题是它有时会出现。我有这种方法结构,因为我解析的页面来自一家气象公司,我想要来自许多城市的信息,而不仅仅是一个城市,所以有些城市一有机会就完美运行,而另一些城市则失败了。有什么建议么?

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
   }
4

2 回答 2

0
  1. 检查 IOException 是否真的不是 MalformedURLException。尝试打印出 URL 以验证错误的 URL 不会导致 IOException。
  2. 您正在解析的文件有多大?也许您的 JVM 内存不足。
于 2013-03-28T01:02:07.300 回答
0

HTTP 500 错误反映了服务器错误,因此它可能与您的客户端代码无关。如果您在请求中传递无效参数,您将收到 400 错误。

503是“服务不可用”,可能是服务器超载无法处理您的请求时发送的。从可公开访问的服务器,这可以解释不稳定的行为。

编辑

当您检测到 503 时,在您的代码中构建一个重试处理程序。Apache HTTPClient可以自动为您执行此操作。

HTTP 状态码列表

于 2013-03-28T06:38:45.287 回答