Обработка ошибок подключения и JSoup

Я пытаюсь создать приложение для извлечения контента с нескольких страниц сайта. Я использую JSoup для подключения. Вот мой код:

for (String locale : langList){
        sitemapPath = sitemapDomain+"/"+locale+"/"+sitemapName;
        try {
            Document doc = Jsoup.connect(sitemapPath)
                    .userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21")
                    .timeout(10000)
                    .get();

            Elements element = doc.select("loc");   
            for (Element urls : element) {
                System.out.println(urls.text());
                }
        } catch (IOException e) {
            System.out.println(e);
        }
    }

Большую часть времени все работает отлично. Однако есть несколько вещей, которые я хочу уметь делать.

Во-первых, иногда возвращается статус 404 или статус 500, возможно, 301. С моим кодом ниже он просто напечатает ошибку и перейдет к следующему URL-адресу. Что я хотел бы сделать, так это попытаться вернуть статус URL для всех ссылок. Если страница соединяется, напечатайте 200, если нет, напечатайте соответствующий код состояния.

Во-вторых, я иногда ловлю эту ошибку «java.net.SocketTimeoutException: Read timed out». Я мог бы увеличить время ожидания, однако я бы предпочел попытаться подключиться 3 раза, после неудачной попытки в 3-й раз я хочу добавить URL-адрес в « failed», чтобы я мог повторить неудачные подключения в будущем.

Может ли мне помочь кто-нибудь, у кого больше знаний, чем у меня?

6
задан Peck3277 20 April 2012 в 11:38
поделиться