在GET上使用重定向进行JSoup cookie处理

时间:2014-04-07 13:17:24

标签: java http url cookies jsoup

我正在写一些必须处理登录页面的应用程序。我需要在URL中使用登录名和密码连接到应用程序。例如:" www.page.com/dsd?login = xxx& password = yyy"

我只能使用jsoup。

public Document getContentOfPage(String url) throws IOException {
    return Jsoup.connect(url)
            .userAgent("Mozilla")
            .cookies(getCookiesForSession(url))
            .timeout(50000)
            .get();
}

public Map<String, String> getCookiesForSession(String url) throws IOException {
    Connection.Response res = Jsoup.connect(url)
            .method(Connection.Method.GET).timeout(50000).execute();
    return res.cookies();
}

主要问题是我需要两次使用GET。在cookie中存储了&#34; session_id&#34;和&#34;登录&#34;登录页面时生成的。 Jsoup只是忘记了页面请求中的cookie并将我重定向到登录页面。有没有机会用单一GET方法维护cookie?

提示: HttpGet完美地运作在这里。

1 个答案:

答案 0 :(得分:2)

您需要存储Cookie。您做得非常好的每个请求都可能会更改您需要使用的Cookie。因此,我会保留它们的全部内容,并在每次请求其他页面时更新它们。如果你重复使用它们,它们可以存储在类中,否则你需要将它们存储在别处并传递它们。

所以这里你的第一步是使用login()函数进行登录并设置这些变量。

Connection.Response res = Jsoup.connect(url).method(Connection.Method.GET)
    .timeout(50000).execute();
this.sessionIdCookie = res.cookie("session_id");
this.loginCookie = res.cookie("login");

然后当你发送你的getContentOfPage函数时,你可以在类中使用它。