Android: extracción de cookies después del inicio de sesión en webview

Tengo una aplicación que abre una URL en una vista web, el usuario debe iniciar sesión en un sitio a través de la vista web y recibe una cookie una vez que haya iniciado sesión. Tengo problemas para obtener cookies después de iniciar sesión.

El problema es que puedo lograrlo usando android.webkit.CookieManager y genero todas las cookies en una sola cadena.

Sin embargo, quiero lograrlo utilizando una cookie store (como en java.net.CookieStore), así que necesito usar java.net.CookieManager.

Estoy usando el siguiente código dentro de onPageFinished () de un WebViewClient. Sé que el problema es abrir una nueva conexión, donde necesito obtener el contenido de la página actual. Agradecería un poco de ayuda, gracias

@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 cookies = cookieJar.getCookies(); for (HttpCookie cookie: cookies) { Log.d(TAG, "cookie name : "+cookie.getName().toString()); } } 

Puede extraer todas las cookies de la URL actual de esta manera desde webview como cadena:

 @Override public void onPageFinished(WebView view, String url){ String cookies = CookieManager.getInstance().getCookie(url); Log.d(TAG, "All the cookies in a string:" + cookies); } 

Era bastante tarde, pero podría ayudar a alguien

puedes obtener el valor de la cookie usando esto

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

Declara la función como

 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; } 

Verifique este enlace: pase las cookies de HttpURLConnection (java.net.CookieManager) a WebView (android.webkit.CookieManager)

Si desea obtener cookies de la vista web, deberá usar android.webkit.CookieManager , desde cualquier HttpUrlConnection ; sin embargo, puede extraer cookies usando java.net.CookieStore

Tendrá que analizar la cadena donde está obteniendo todas las cookies.