2014-09-12 2 views
5

Was ich versuche zu erreichen ist auf einer https-Website automatisch zu loggen, indem Sie ein Token als Cookie setzen.Android Webview automatische Anmeldung an https Website durch Einstellung Token Cookie

(Es funktioniert auf Android-Chrome-Browser, aber nicht in Anwendung webview)

Im Grunde habe ich zwei Problem bin vor beim Laden https URL in Web-Ansicht mit Cookie

Ausgabe 1

I gesetzt bekomme folgende Logmeldung.

Failed to validate the certificate chain, error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

Ich versuchte onReceivedSslError zwingende und handler.proceed(); wie unten genannt.

@Override 
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { 
    Log.d(TAG, "==> " + error.toString()); 
    handler.proceed(); 
} 

Aber noch sehe ich weiße Seite (I sein Vorkommnis wegen Zertifikat Frage gehe davon aus.)

Ausgabe 2

Ich habe eine Login-URL mit mir bekam (zB https://www.abc.com/login.html)

Was ich versuche zu erreichen, ist die automatische Anmeldung in der Web-Ansicht durch Setzen eines Cookies.

CookieSyncManager.createInstance(webView.getContext()); 
CookieManager cookieManager = CookieManager.getInstance(); 
CookieManager.getInstance().setAcceptCookie(true); 

String token = PreferenceHelper.loadTokenFromPreference(this); 

String sessionCookie = "staging=" + token; 

cookieManager.setCookie("https://www.abc.com/aaa/", 
    sessionCookie); 
CookieSyncManager.getInstance().sync(); 

SystemClock.sleep(1000); 

Aber immer noch kann ich nicht automatisch login.Rather Ich sehe die weiße Seite.

Was ich nicht sicher bin, ist genau dort, wo ich einen Fehler mache.

cookieManager.setCookie erfordert erstes Argument als eine URL, für die Cookie gesetzt werden muss, bin ich nicht sicher, welche URL ich genau geben muss?

Kann mir jemand den richtigen Ansatz vorschlagen, damit es funktioniert?

Dank

+0

Es ist ziemlich seltsam, dass Sie den Cookie-Inhalt kennen, aber nicht die Domäne. Ist das deine Webseite? Wenn nicht, wie haben Sie den Cookie-Inhalt herausgefunden? – Simas

+0

@ user3249477 Ich stelle auch eine Domain ein. aber ich bekomme immer noch eine leere Seite. –

Antwort

0

Nachdem ich lange gesucht hatte, bekam ich endlich die Lösung.

Ich musste folgende Zeilen hinzufügen, damit es funktioniert.

webView.getSettings().setAppCachePath(appCachePath); 
webView.getSettings().setAppCacheEnabled(true); 
+1

Wo ist "appCachePath"? –

7

Sie können die Plätzchen als HttpHeader in loadUrl Funktion von WebView passieren.

HashMap<String, String> map = new HashMap<String, String>(); 
String token = PreferenceHelper.loadTokenFromPreference(this); 
String sessionCookie = "staging=" + token; 
map.put("Cookie", sessionCookie); 
webView.loadUrl(url, map); 
+0

Was ist PreferenceHelper? @Abhishek V –