Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 连接用户jsoup重定向错误_Java_Redirect_Connect_Jsoup - Fatal编程技术网

Java 连接用户jsoup重定向错误

Java 连接用户jsoup重定向错误,java,redirect,connect,jsoup,Java,Redirect,Connect,Jsoup,我正在尝试从web服务器上的动态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

我正在尝试从web服务器上的动态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());
我把参数和数据放在一起,所以名称是登录名,密码显然是密码,请求是url重定向

当我尝试tjis代码时,本机连接是由“来宾”Zabbix用户建立的。这意味着他们无权查看我想要的内容。jsoup没有使用我的管理日志。 当我尝试禁用guest user is Zabbix时,出现错误:

IOException: Too many redirects occurred trying to load URL
我认为jsoup是在重定向之后发布的。但是重定向是在我的index.php中进行的,所以

我真的需要作为管理员用户连接。一个可行的方法是将管理密码设置为guest(我尝试过了,它可以工作)

谢谢你的帮助, 当做
Olivier。

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

您基本上有两种选择:

  • 重写Jsoup代码,以便手动维护cookie。您可以通过获取响应cookies。您可以通过在后续请求中设置Cookie

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


  • 好的,很好,我使用了HttpClient而不是URLConnection。嗨,对不起,但是我在使用VB.Net时遇到了同样的问题。你能给我一个内特的示例代码吗?这是离题的。只需按右上角的“提问”按钮。确保您提出了一个具体的问题,其中显示了您的代码工作。