Код состояния веб-страницы HtmlUnit

Я пытаюсь получить веб-статус для данной страницы. Однако, когда это ошибка 404, страница не возвращает код состояния, а выдает ошибку.

int status= webClient.getPage("website").getWebResponse().getStatusCode();
System.out.println( status);

Любые идеи?

Я смотрю, когда сайты истекают, однако в целях тестирования я исказил URL-адрес нужного веб-сайта, чтобы увидеть, могу ли я увидеть 404.


person EK_AllDay    schedule 21.06.2012    source источник


Ответы (2)


Согласно этому

Ты можешь сделать это:

webclient.setThrowExceptionOnFailingStatusCode(False)

****РЕДАКТИРОВАТЬ ***

Это распечатывает ваш код состояния:

 WebClient webClient = new WebClient();
 webClient.setThrowExceptionOnFailingStatusCode(false);
 int status = webClient.getPage("http://google.co.uk/ffffff").getWebResponse()
            .getStatusCode();
 System.out.println(status);

Выводит 404 - ваш код состояния.

person plasma147    schedule 21.06.2012
comment
Нет, я хочу получить код состояния веб-страницы. Даже если это ошибка 404. - person EK_AllDay; 21.06.2012
comment
Обновил мой ответ. это работает, если я не упускаю из виду то, что вы просите. 404 — это код состояния http. - person plasma147; 22.06.2012
comment
Ваш случай работает, однако конкретный веб-сайт, который я пытаюсь использовать, не работает по какой-то странной причине. - person EK_AllDay; 22.06.2012
comment
Что значит не работает? какое исключение выдает? - person plasma147; 22.06.2012

Кроме того, вы можете по-прежнему разрешать создание исключения FailingHttpStatusCodeException (true). Затем в предложении catch получите код состояния ошибки.

...
int status = 0;
Object page = null;
try {
     page = webClient.getPage(webRequest);
     webClient.close();
     if (page instanceof UnexpectedPage) {
         status = ((UnexpectedPage) page).getWebResponse().getStatusCode();
     } else if (page instanceof HtmlPage) {
         status = ((HtmlPage) page).getWebResponse().getStatusCode();
     }
     // do something else ...
} catch (FailingHttpStatusCodeException | IOException e) {
     if (e instanceof FailingHttpStatusCodeException) {
          status = ((FailingHttpStatusCodeException) e).getStatusCode();
     }
     // do something else ...
}
person James Crocker    schedule 02.10.2017