【问题标题】:Avoid redirection when reading html source from an Applet从 Applet 读取 html 源代码时避免重定向
【发布时间】: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


    【解决方案1】:

    这可能取决于服务器中安全性的实施方式。有时它可能会检查来源。因此,您可以尝试设置引荐来源网址属性或适当的标头。如果您正确登录,它可能会起作用。例如。

    String url = "https://www.internalsystem.net/system//src/order/OrderProvList.cfm";
    doc = Jsoup.connect(url).referrer(url).get();
    

    【讨论】:

      猜你喜欢
      • 2013-01-30
      • 2011-11-24
      • 1970-01-01
      • 2014-03-07
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多