我有一个在 web 视图中打开 url 的应用程序,然后用户必须通过 web 视图登录到站点并在登录后收到 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());
}
}
您可以通过这种方式从 webview 中以字符串形式提取所有 cookie 当前 url:
@Override
public void onPageFinished(WebView view, String url){
String cookies = CookieManager.getInstance().getCookie(url);
Log.d(TAG, "All the cookies in a string:" + cookies);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)