Ошибка 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 может сделать это автоматически для вас.
- Убедитесь, что IOException действительно не является MalformedURLException. Попробуйте распечатать URL-адреса, чтобы убедиться, что неверный URL-адрес не вызывает исключение IOException.
- Насколько большой файл, который вы анализируете? Возможно, вашей JVM не хватает памяти.