【问题标题】:Error 503 in HTTP during page parsing in javajava中页面解析期间HTTP中的错误503
【发布时间】:2013-03-18 07:59:11
【问题描述】:

今天我正在开发一个 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
   }

【问题讨论】:

    标签: java url ioexception


    【解决方案1】:

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

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

    编辑

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

    List of HTTP Status Codes

    【讨论】:

    • 完成了,这不是我的错。今天一切正常,我认为页面服务器已修复。谢谢
    【解决方案2】:
    1. 检查 IOException 是否真的不是 MalformedURLException。尝试打印 URL 以验证错误的 URL 不会导致 IOException。
    2. 您正在解析的文件有多大?也许您的 JVM 内存不足。

    【讨论】:

    • 我认为并非如此,因为它有时有效,而有时则无效。该页面大约有 55000 个字符,所以我认为这不是问题
    • 你如何将String url 传递给方法?请提供示例网址。
    • 哪一行抛出了 IOException?
    • url为静态url,城市之间只改变4或5个字符。
    • 一个异常示例是“java.io.IOException:服务器返回 HTTP 响应代码:503 for URL:aemet.es/es/eltiempo/observacion/…”其中 1442U 字符串是如果存在一个或其他城市时发生的变化跨度>
    猜你喜欢
    • 2011-01-17
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    相关资源
    最近更新 更多