2013-12-09 7 views
5

Mein Problem ist mit WebView Umgang mit Weiterleitungen und benutzerdefinierten Cookies.Android WebView verlieren Cookies in Weiterleitungen

ich folgendes:

  1. Erstellen Sie Instanzen von CookieSyncManager und CookieManager in Anwendung erstellen
  2. Anruf sCookieManager.setAcceptCookie(true); in statischen Abschnitt in util Klasse
  3. Anruf sCookieManager.setCookie(url, value); sCookieSyncManager.sync();
  4. Und schließlich mWebView.loadUrl

Wh Auf Serverseite geschieht, dass es zuerst den richtigen Cookie bekommt, den ich gesetzt habe, einige Umleitungen laufen lassen und der Cookie scheint verloren zu sein. Irgendwelche Ideen, was mache ich hier falsch?

Ich habe versucht, setCookie läuft - sync in einem anderen Thread eine gewisse Verzögerung zu geben und dann loadUrl aber es half nicht.

Alle ähnlichen Beiträge scheinen Lösungen zu haben, die nicht funktionieren.

Danke.

UPDATE:

Ich bemerkte, dass setCookie mit mehreren Plätzchen zu geben, wie zum Beispiel:

setCookie("MyCookie=value; Domain=mydomain.com; Path=/; Secure; HttpOnly; MySecondCookie=value2....)" 

Nur die erste angelegt wird, und dann ist es weg, wenn der Server läuft auf seine eigene Domain umleitet. Dieses Problem kann feste Einstellungen benutzerdefinierte Cookies nacheinander in einer Schleife.

Ich habe hinzugefügt vorübergehend handler.proceed(); in onReceivedSslError und ich aus den Protokollen sehen können, dass es Auslösung ist nur vor Website umleitet und Cookie ist onPageFinished auf den nächsten Seiten verloren in, könnten einige Verbindung zwischen sicheren Cookies und ungültiges Zertifikat Ketten dort sein?

+0

Ich bin vor gleicher Fehler ? Hast du eine Lösung dafür gefunden? –

Antwort

0

Versuchen nicht

sCookieManager.setCookie(url, value) 

verwenden, aber

sCookieManager.setCookie(cookieDomain, value) 

cookie Sie zum Beispiel finden Chrom mit: // prüfen

Arbeitsbeispiel:

String cookieDomain = ".www.drive2.ru"; 
String siteUrl = "https://drive2.ru"; 

webView = (WebView) getView().findViewById(R.id.web_view); 
webView.setWebViewClient(new WebViewClient()); // force open any new url in same webview (whether it is user click or redirect) 

CookieManager cookieManager = CookieManager.getInstance(); 
cookieManager.setAcceptCookie(true); 
cookieManager.setCookie(cookieDomain, "cookieName=cookieValue"); 
webView.loadUrl(siteUrl);