【问题标题】:Connection user jsoup redirect error连接用户 jsoup 重定向错误
【发布时间】:2012-03-04 10:05:44
【问题描述】:

我正在尝试从我的网络服务器上的动态 php 页面获取 html 表。 Web 服务器是一个 Zabbix 前端。

这是我的示例代码:

doc = Jsoup.connect("http://192.168.209.178/zabbix/index.php").data("name", "Admin", "password", "password", "enter", "Enter", "request", "/zabbix/events.php").userAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.46 Safari/535.11").followRedirects(true).post();

System.out.println(doc.title());
System.out.println(doc.toString());

我把参数和数据放在一起,所以 name 是登录名,password 显然是密码,request 是一个 url 重定向。

当我尝试使用 tjis 代码时,本机连接是“访客”Zabbix 用户。这意味着没有权利查看我想要的内容。 jsoup 没有使用我的管理员登录。 当我尝试禁用访客用户是 Zabbix 时,出现错误:

IOException: Too many redirects occurred trying to load URL

我认为 jsoup 是在重定向后发布的。但是重定向是在我的 index.php 中进行的,所以...

我确实需要以管理员用户身份连接。一种解决方法是为访客设置管理密码(我尝试过并且有效)。

感谢您的帮助, 问候。 奥利维尔。

【问题讨论】:

    标签: java redirect connect jsoup


    【解决方案1】:

    登录用户通常存储在会话中。会话通常由 cookie 维护。然而,Jsoup 不会在后续/重定向请求中保留 cookie。事实上,Jsoup 根本不会自动维护 cookie。基本上,您不再在重定向页面中登录。在假定 cookie 不可禁用的设计不佳的网站中,这确实可能导致无限重定向循环。

    你基本上有两个选择:

    1. 重写您的 Jsoup 代码,以便您手动维护 cookie。您可以通过Response#cookies() 获取响应cookie。您可以通过Request#cookie()在后续请求中设置cookie。

    2. 使用真正的 HTTP 客户端而不是 Jsoup 来维护 cookie。大多数 HTTP 客户端,甚至是 Java SE 内置的 URLConnection,都允许您在后续 HTTP 请求中透明地维护 cookie,而无需经历手动收集和设置 cookie 的麻烦。最后,您得到 HTTP 客户端的响应为 InputStream,并将其提供给 Jsoup,该 Jsoup 也有一个采用 InputStreamparse() 方法。

    【讨论】:

    • 好吧,我用 HttpClient 代替了 URLConnection。
    • 嗨,对不起,但我在使用 VB .Net 时遇到了同样的问题。你能给我一个.Net中的示例代码吗
    • 这是题外话。只需按右上角的“”按钮。确保你提出一个具体的问题来展示你的代码工作。
    猜你喜欢
    • 2012-05-23
    • 2012-11-25
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多