2012-06-21 2 views
4

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

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

Любые идеи?

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

ответ

13

Согласно this

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

webclient.setThrowExceptionOnFailingStatusCode(False) 

**** EDIT ***

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

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

Распечатывается 404 - ваш код состояния.

+0

Нет, я хочу получить код состояния веб-страницы. Даже если это ошибка 404. –

+0

Обновлен мой ответ. он работает, если я не пропущу то, о чем вы спрашиваете. 404 - это код статуса http – plasma147

+0

+1 с разрешением – Windle

0

В качестве альтернативы вы можете продолжать выдавать исключение FailedHttpStatusCodeException (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 ... 
} 
Смежные вопросы