我有一个使用 webview 的 android 应用程序,用户必须使用用户名和密码登录,然后才能重定向到我想使用 jsoup 刮除数据的页面。由于 jsoup 线程将是不同的会话,因此用户必须再次登录。
现在我想使用从 webview 接收到的 cookie 与 jsoup 请求一起发送,以便能够抓取我的数据。
使用以下代码将 cookie 与 cookiesyncmanager 同步。这基本上是我陷入困境的地方,因为我不知道如何读出 cookie,也不知道如何将其附加到 jsoup 请求。请帮忙? :)
public void onPageFinished(WebView view, String url) {
CookieSyncManager.getInstance().sync();
用户登录后我正在执行的 jsoup scrape 是这样的:
doc = Jsoup.connect("https://need.authentication.com").get();
Elements elements = doc.select("span.tabCount");
Element count = elements.first();
Log.d(TAG, "test"+(count));
我不是 Android 开发者,但也许你可以尝试这样的事情:
final String url = "https://need.authentication.com";
// -- Android Cookie part here --
CookieSyncManager.getInstance().sync();
CookieManager cm = CookieManager.getInstance();
String cookie = cm.getCookie(url); // returns cookie for url
// ...
// -- JSoup part here --
// Jsoup uses cookies as "name/value pairs"
doc = Jsoup.connect("https://need.authentication.com").header("Cookie", cookie).get();
// ...
我希望这会有所帮助,但正如我之前所说:我不是 Android 开发人员
(并且代码未经过测试!)
这里有一些文档: