Android – 在webview中login后提取cookie

我有一个应用程序,在web视图中打开一个url,用户必须通过webviewlogin到网站,并在login后收到一个cookie。login后,我有问题得到cookie。

问题是,我可以实现这个使用android.webkit.CookieManager,并输出所有的cookie在一个单一的string。

但是,我想实现它使用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中以stringforms提取所有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); } 

这是一个相当晚,但它可以帮助某人

你可以使用这个获得cookie值

 getCookie("http://www.example.com","CookieName"); 

声明该函数为

 public String getCookie(String siteName,String CookieName){ String CookieValue = null; CookieManager cookieManager = CookieManager.getInstance(); String cookies = cookieManager.getCookie(siteName); String[] temp=cookies.split(";"); for (String ar1 : temp ){ if(ar1.contains(CookieName)){ String[] temp1=ar1.split("="); CookieValue = temp1[1]; break; } } return CookieValue; } 

检查此链接 – 将Cookie从HttpURLConnection(java.net.CookieManager)传递给WebView(android.webkit.CookieManager)

如果你想从webview获取cookies,你将不得不使用android.webkit.CookieManager ,从任何HttpUrlConnection ,但是,你可以提取cookie使用java.net.CookieStore

您将需要parsing所有cookie的string。