2

次のページhttp://www.vermittlerregister.orgを HTMLUnit で解析しようとしています。しかし、それに関する問題は、要求されたページを取得できないことです。代わりに、その Web サイトのタイムアウト ページが表示されますが、これは意味がありません。

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

フェッチしているページには更新の指示があります。ユーザーは 30 分後にタイムアウト メッセージにリダイレクトされます。

<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 分間の更新指示は無視されます。

于 2012-09-07T09:20:11.267 に答える