Tarun
Tarun

Reputation: 3506

Reading all response headers using HtmlUnit

I was trying to use http unit to read response header for my application -

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

I do get to see the response headers but they are limited to only first http get request. When I used LiveHTTPHeaders plugin for firefox plugin I got to all the get requests and corresponding header responses.

Is there any way to get http header for all subsequent requests and not being limited to just first get?

Upvotes: 5

Views: 7674

Answers (3)

Birhanu Eshete
Birhanu Eshete

Reputation: 372

List<NameValuePair> response =currentPage.getWebResponse().getResponseHeaders();
for (NameValuePair header : response) {
     System.out.println(header.getName() + " = " + header.getValue());
 }

works fine for me.

Upvotes: 7

fijiaaron
fijiaaron

Reputation: 5185

Here is a concise example displaying all the headers from a response with 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());
}

Upvotes: 2

Mosty Mostacho
Mosty Mostacho

Reputation: 43494

AFAIK, this should work:

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());

Does this code work? If it does, then you are probably not properly assigning the currentPage variable so it keeps holding the original values.

Upvotes: 1

Related Questions