2017-03-15 26 views
0

我正在尝试访问成功登录后的网站,但出现错误。我发现,我没有得到任何的cookie从Connection.Response获取会话ID cookie是在用jsoup登录到网站后创建的

Connection.Response loginForm = Jsoup.connect(LOGIN_URL) 
        .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0") 
        .method(Connection.Method.GET) 
        .timeout(3000) 
        .execute(); 

      System.out.println(loginForm.cookies()); 

      Document login = Jsoup.connect(LOGIN_URL) 
        .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0") 
        .data("email", email) 
        .data("password", password) 
        .cookies(loginForm.cookies()) 
        .timeout(3000) 
        .post(); 

登录文件返回正确的网站,所以登录成功。我使用谷歌浏览器开发工具(Google Chrome network screenshot)分析了这个过程。那就是我发现LOGIN_URL与Connection.ResponseDocument相同。我也很确定,表单只需要电子邮件和密码,没有其他隐藏的输入(尽管不能给你提供链接)。我还可以发现在登录后创建了一个cookie(会话ID)。

System.out.println(loginForm.cookies());什么也没有返回({}),所以我不能使用loginForm.cookies()作进一步的使用。如果有办法从POST获取cookie,这将是最佳选择。

有没有办法获得会话ID cookie或其他方式来解决我的问题?

谢谢

回答

0

最后我找到了解决办法:

您可以在一个步骤都做使用Connection.Method.POST。所以响应是POST的响应

Connection.Response loginForm = Jsoup.connect(LOGIN_URL) 
       .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0") 
       .method(Connection.Method.POST) 
       .timeout(3000) 
       .data("email", email) 
       .data("password", password) 
       .execute(); 

     System.out.println(loginForm.cookies());