Ошибка 503 в HTTP при разборе страницы в Java

Сегодня я занимаюсь разработкой 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
   }

2 ответа

Решение

Ошибки HTTP 500 отражают ошибки сервера, поэтому, скорее всего, они не имеют ничего общего с вашим клиентским кодом. Вы получите ошибку 400, если вы передадите неверные параметры по вашему запросу.

503 "Служба недоступна" и может быть отправлена ​​сервером, если он перегружен и не может обработать ваш запрос. С общедоступного сервера это может объяснить ошибочное поведение.

редактировать

Создайте обработчик повторов в своем коде, когда вы обнаружите 503. Apache HTTPClient может сделать это автоматически для вас.

Список кодов состояния HTTP

  1. Убедитесь, что IOException действительно не является MalformedURLException. Попробуйте распечатать URL-адреса, чтобы убедиться, что неверный URL-адрес не вызывает исключение IOException.
  2. Насколько большой файл, который вы анализируете? Возможно, вашей JVM не хватает памяти.
Другие вопросы по тегам