Чтение всех заголовков ответов с использованием HtmlUnit - PullRequest
4 голосов
/ 03 февраля 2012

Я пытался использовать http-модуль для чтения заголовка ответа для моего приложения -

WebClient webClient = new WebClient();
WebClient.setThrowExceptionOnScriptError(false);
HtmlPage currentPage = webClient.getPage("http://myapp.com");
WebResponse response = currentPage.getWebResponse();
System.out.println(response.getResponseHeaders());  

Я вижу заголовки ответа, но они ограничены только первым запросом http get. Когда я использовал плагин LiveHTTPHeaders для плагина Firefox, я получил все запросы get и соответствующие ответы заголовков.

Есть ли способ получить заголовок http для всех последующих запросов и не ограничиваться только первым получением?

Ответы [ 3 ]

6 голосов
/ 06 марта 2012
List<NameValuePair> response =currentPage.getWebResponse().getResponseHeaders();
for (NameValuePair header : response) {
     System.out.println(header.getName() + " = " + header.getValue());
 }

у меня отлично работает.

2 голосов
/ 08 ноября 2013

Вот краткий пример, показывающий все заголовки из ответа с HTMLUnit:

WebClient client = new WebClient();
HtmlPage page = client.getPage("http://www.example.com/");
WebResponse response = page.getWebResponse();

for (NameValuePair header : response.getResponseHeaders()) {
    System.out.println(header.getName() + " : " + header.getValue());
}
1 голос
/ 04 февраля 2012

AFAIK, это должно работать:

WebClient webClient = new WebClient();
WebClient.setThrowExceptionOnScriptError(false);
HtmlPage currentPage = webClient.getPage("http://myapp.com");
WebResponse response = currentPage.getWebResponse();
System.out.println(response.getResponseHeaders());
// And even in subsequent requests
currentPage = webClient.getPage("http://myapp.com");
response = currentPage.getWebResponse();
System.out.println(response.getResponseHeaders());

Этот код работает?Если это так, то вы, вероятно, неправильно присваиваете переменную currentPage, поэтому она сохраняет первоначальные значения.

...