我正在写一些必须处理登录页面的应用程序。我需要在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完美地运作在这里。
答案 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函数时,你可以在类中使用它。