我正在尝试通过编程接口(使用带有Jsoup的Java)登录网站并保存响应cookie,以便将其传递给以下请求。但登录后,响应标题中没有cookie:(
我确实设法成功登录,但响应标头中没有Cookie。出于调试目的,我从Chrome浏览器登录并使用chrome网络选项卡检查响应标头,然后在我单击“登录”按钮后,它成功登录到索引页面,但响应标头中没有任何cookie。我知道我需要cookie才能访问需要登录的其他页面,因为他们的请求标题有一个名为“SESSION ...”的cookie,我从未在响应标题中收到过该cookie。
有人请帮我在这里找出问题吗?我已经发布了以下登录代码。这是网站www.lib.uts.edu.au
Connection.Reponse res = Jsoup.connect(url)
.data("username", id
, "password", password
, "lt", ltVal
, "_eventId", "submit"
, "sso_submit", "Sign In"
, "rememberMe", "true")
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2")
.cookies(cookies)
.method(Method.POST)
.followRedirects(true)
.execute();
答案 0 :(得分:3)
我认为您正在查看错误的呼叫,通常在之前的登录呼叫(加载登录表单的呼叫)中设置cookie。
如果你尝试这段代码:
//This url loads the login form
Connection.Response response = Jsoup.connect("https://www.lib.uts.edu.au/auth/login?service=https%3A%2F%2Fwww.lib.uts.edu.au%2Fcas%3Fcas_load_iframe%3D1%26destination%3Ddashboard&iframe=true")
.timeout(300000)
.userAgent("Mozilla/5.0")
.method(Connection.Method.GET).execute();
System.out.println("JSESSIONID=" + response.cookies().get("JSESSIONID"));
你会看到类似的东西:
JSESSIONID=E16B98E972FFF05E9091453C01779E67
我希望你能找到你正在寻找的会话cookie,只需记住在登录和成功通话中使用该cookie。
---编辑---
还有另一个uri设置了一个SSESS012 ... cookie,然后重定向到我在原始答案中提到的url,请试试这个:
//Try this other url
Connection.Response response = Jsoup.connect("https://www.lib.uts.edu.au/cas?destination=dashboard&cas_load_iframe=1")
.timeout(300000)
.userAgent("Mozilla/5.0")
.method(Connection.Method.GET).execute();
System.out.println("JSESSIONID=" + response.cookies().get("JSESSIONID"));
System.out.println("SSESS012...=" + response.cookies().get("SSESS012ea49d58f199a67a953e1500684490"));
现在你会看到类似的东西:
JSESSIONID=5466DCD5601415175514AA88FEC967A0
SSESS012...=DfL4tW0xOdfu_9Op52b-z3El3CNG2xxOYZdruuVfWH0
我希望这就是你所需要的:)