2

我正在尝试使用 HTMLUnit解析以下页面http://www.vermittlerregister.org 。但问题是,我没有得到请求的页面。相反,我得到了该网站的超时页面,这对我来说没有任何意义。

final WebClient webClient = new WebClient();
webClient.getPage("http://www.vermittlerregister.org");

我通过控制台得到的唯一警告是:

com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl 通知
警告:遇到过时的内容类型:'application/x-javascript'。

这不应该导致根据请求获取不同页面的问题。

顺便说一句:如果我使用标准的 JAVA Api java.net.URL,我会得到正确的页面内容。

4

1 回答 1

2

您正在获取的页面有一条刷新指令 - 半小时后用户会被重定向到超时消息:

<meta id="ctl00_MetaRefresh" http-equiv="REFRESH" 
content="1800;url=http://www.vermittlerregister.org:80//system/logout.aspx?timeout=true" />

HtmlUnit 需要决定是给你当前页面,还是刷新要发送给你的页面。它的默认行为是立即遵循所有刷新指令(WebClient使用ImmediateRefreshHandler)。您可以将其更改为 a NiceRefreshHandler,它允许您根据延迟时间选择要遵循的刷新:

final WebClient webClient = new WebClient();
webClient.setRefreshHandler(new NiceRefreshHandler(5));
webClient.getPage("http://www.vermittlerregister.org");

WebClient如果延迟为 5 秒或更短,这会告诉刷新,并且会忽略页面上的 30 分钟刷新指令。

于 2012-09-07T09:20:11.267 回答