我试图使用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标头,而不仅限于第一次获取?
答案 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变量,因此它保持原始值。