【发布时间】:2016-12-13 14:12:09
【问题描述】:
我一直在创建一个登录并抓取网站的 Android 应用。不幸的是,我遇到了 JSoup 和持久会话 cookie 的问题。
每当我尝试发出 POST 请求时,网站都会抱怨会话已过期。我已将问题的原因隔离到JSESSIONID cookie(因为在尝试登录时在浏览器上删除它会产生相同的结果)。但是,即使我使用.cookies() 方法包含所有以前的cookie,网站仍然会抱怨会话已过期。
我想知道我是否犯了任何明显的错误,导致我的应用无法正常维护会话。
到目前为止我的代码的相关部分(注意:我在这个项目中使用 Kotlin):
val url = "omitted here"
val username = "user"
val password = "hunter2"
val initial = Jsoup.connect(url)
.method(Connection.Method.GET).execute()
val cookies = initial.cookies()
val login = Jsoup.connect(url)
.userAgent("Mozilla")
.data("login_name", username)
.data("password", password)
.cookies(cookies)
.post()
任何帮助将不胜感激!
【问题讨论】:
-
基于 cmets,这可能根本不是 Kotlin 问题,而是页面没有从服务器返回 cookie,而是稍后通过 JavaScript 返回。关闭 Web 浏览器中的 JavaScript,看看您是否仍然在 Web 浏览器中获得 cookie。如果不知道您尝试访问的页面,我认为我们无法做更多事情。但是我们会为您调试您的页面,而不是回答这个问题。
标签: android cookies jsoup kotlin