使用HtmlUnit读取所有响应头

时间:2012-02-03 12:14:38

标签: java htmlunit

我试图使用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插件for firefox插件时,我得到了所有获取请求和相应的标头响应。

有没有办法为所有后续请求获取http标头,而不仅限于第一次获取?

3 个答案:

答案 0 :(得分:6)

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

对我来说很好。

答案 1 :(得分:2)

这是一个简明的示例,显示来自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());
}

答案 2 :(得分:1)

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变量,因此它保持原始值。