Android: extracción de cookies después del inicio de sesión en webview
android-webview cookiestore (3)
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<HttpCookie> cookies = cookieJar.getCookies();
for (HttpCookie cookie: cookies) {
Log.d(TAG, "cookie name : "+cookie.getName().toString());
}
}
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;
}
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);
}
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.