我有一个应用程序在 webview 中打开一个 url,然后用户必须通过 webview 登录到一个站点并在登录后接收一个 cookie。我在登录后获取 cookie 时遇到问题。
问题是,我可以使用 android.webkit.CookieManager 实现这一点,并在单个字符串中输出所有 cookie。
但是,我想使用 cookie 存储(如在 java.net.CookieStore 中)来实现它,所以我需要使用 java.net.CookieManager。
我在 WebViewClient 的 onPageFinished() 中使用以下代码。我知道问题在于打开一个新连接,我需要从当前页面获取内容。我会很感激一些帮助,谢谢
@Override
public void onPageFinished(WebView view, String url){
Log.d(TAG, "Finished loading: " + url);
CookieSyncManager syncManager = CookieSyncManager.createInstance(Main.this);
syncManager.sync();
CookieManager manager = new CookieManager();
manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(manager);
try {
URL blah = new URL(url);
HttpURLConnection con = (HttpURLConnection) blah.openConnection();
readStream(con.getInputStream()); // outputting html
}
catch (Exception e) {
}
CookieStore cookieJar = manager.getCookieStore();
List<HttpCookie> cookies = cookieJar.getCookies();
for (HttpCookie cookie: cookies) {
Log.d(TAG, "cookie name : "+cookie.getName().toString());
}
}