Java http客户端 - 从javascript刷新后获取页面内容

时间:2013-07-29 11:09:39

标签: java httpclient

有很多例子如何用java客户端读取url页面内容。 例如,这里是apache http client(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。 例如在网址www.mysite.com/xxx中,从javascript到www.lysite.com/realpage/xxx的5秒之后会有重定向,但是你不能直接访问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客户端中获取此页面的内容? Tnx!

1 个答案:

答案 0 :(得分:2)

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

但是,如果你的意思是,给定一个包含这段JavaScript的响应,你怎么能以编程方式运行script元素中的代码,那就更难了。

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

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