有很多例子如何用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!
答案 0 :(得分:2)
这不是重定向,这是导航到另一个页面的浏览器中的JavaScript。如果浏览器可以看到其他页面,那么您的应用程序,防火墙和代理也可以允许。所以你的代码可以简单地加载另一个URL。
但是,如果你的意思是,给定一个包含这段JavaScript的响应,你怎么能以编程方式运行script
元素中的代码,那就更难了。
虽然使用javax.script API在Java中运行JavaScript非常简单,但使用完整的DOM运行它并处理对DOM的更改会更加困难。
虽然使用自己的DOM编写引擎可能是一项有趣的练习,但我的建议是使用已经为您完成的Selenium WebDriver之类的API。