2012-07-28 37 views
2

我想用HTMLUnit解析以下頁面http://www.vermittlerregister.org。但問題是,我沒有得到所需的頁面。相反,我得到該網站的超時頁面,這對我沒有任何意義。
HTMLUnit解析aspx

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

我得到控制檯的唯一警告是:

com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl通知
WARNUNG:遇到過時的內容類型: '應用程序/ x-的javascript'。

這不應該導致根據請求獲取不同頁面的問題。

順便說一句:如果我使用標準的JAVA Api java.net.URL,我會得到正確的頁面內容。

回答

2

您要提取的頁面有一個刷新指令 - 用戶重定向到一個超時消息半個小時後:

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

需要的HtmlUnit來決定是否給你的當前頁面,或一個刷新將發送給您。其默認行爲是立即執行所有刷新指令(WebClient使用ImmediateRefreshHandler)。您可以將其更改爲一個NiceRefreshHandler相反,它可以讓你選擇哪刷新根據自己的延遲時間如下:

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

這告訴WebClient刷新如果延遲爲5秒以下,將忽略30分頁刷新指令。