0

有很多示例如何使用 java 客户端读取 url 页面内容。例如这里是 apache http 客户端 ( http://hc.apache.org/httpclient-legacy/tutorial.html )

HttpClient client = new HttpClient();
GetMethod method = new GetMethod(url);
int statusCode = client.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
   System.err.println("Method failed: " + method.getStatusLine());
}
byte[] responseBody = method.getResponseBody();

这是我的问题:在页面中的 url 可以在一段时间后重定向到其他 url。例如在 url www.mysite.com/xxx 中有 5 秒后从 javascript 重定向到 url www.mysite.com/realpage/xxx,但你不能直接去 www.mysite.com/real-page/xxx,只能带重定向。

<script type="text/javascript">
    function go() {
        document.location.href = "http://www.mysite.com/realpage/xxx";
    }
window.setTimeout("go()",5000);
</script>

如何在 Java 客户端中获取此重定向,以及如何在 Java 客户端中获取此页面的内容?天呐!

4

1 回答 1

2

这不是重定向,这是浏览器中的 JavaScript 导航到另一个页面。如果浏览器可以看到其他页面,那么您的应用程序、防火墙和代理也可以。因此,您的代码可以简单地加载其他 URL。

但是,如果您的意思是,给定包含这段 JavaScript 的响应,您如何以编程方式运行script元素中的代码,那么这要困难得多。

虽然使用javax.script API在 Java 中运行 JavaScript 非常简单,但使用完整的 DOM 运行它并处理对该 DOM 的更改要困难得多。

虽然用自己的 DOM 编写引擎可能是一个有趣的练习,但我的建议是使用像Selenium WebDriver这样已经为您完成的 API。

于 2013-07-29T11:33:55.543 回答