【发布时间】:2014-07-21 21:19:20
【问题描述】:
我编写了一个 Java 小程序来从我们的一个 Intranet 系统中读取 HTML。
我的代码如下:
public static String getOrdersInProvisioning(){
try{
URL url = new URL("https://www.internalsystem.net/system//src/order/OrderProvList.cfm");
URLConnection connection = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
String result;
StringBuilder a = new StringBuilder();
while ((inputLine = reader.readLine()) != null) {
a.append(inputLine);
a.append("\r\n");
}
reader.close();
result = a.toString();
return result;
}catch (Exception e){
return e.toString();
}
}
这个想法是我可以阅读 HTML 源代码(我登录系统时看到的相同代码,右键单击页面并选择“查看页面源代码”)并使用生成的字符串来提取诸如我的小程序的订单号、到期日期等。
我可以在这个 Intranet 系统上的某些页面上成功地执行此操作(当您从一个页面移动到另一个页面时,URL 会发生变化),但在其他页面上却不能。我必须以有效用户身份登录系统才能工作。
在失败的页面上,生成的 HTML 代码似乎表明我的小程序被 JavaScript 重定向到某种登录页面:
<SCRIPT LANGUAGE="JavaScript">
self.location='/system//src/Login.cfm?redirect=1';
</SCRIPT>
我已经仔细检查了我是否已登录系统并且我的小程序正在正确的用户帐户下运行。但由于某种原因,它只适用于特定页面。查看失败的页面的 HTML 源代码后,我猜测其中似乎有一段特定的 JavaScript 是导致此重定向的原因。
我的问题是,有没有办法避免这种重定向 - 或者这个 Javascript 是否可以阻止我正在尝试做的事情?
我曾尝试将 Jsoup 与 followRedirects(false) 和 httpConn.addRequestProperty(...) 选项一起使用,但均无济于事。
【问题讨论】:
标签: java javascript html applet jsoup