ANDROID: Sitzung zwischen Webview und httpclient teilen

8

Ich habe tatsächlich eine geloggte Sitzung in meinem WebView. Aber ich benutze auch httpclient, um Daten aus dem Internet zu senden und zu erhalten. Ich habe im Internet gesehen, dass es unmöglich ist, den Inhalt eines WebView zu bekommen, also musste ich meinen httpclient benutzen, um Daten von einem Webservice zu bekommen.

Das Problem ist, dass dieser Webservice Sitzungen verwendet ... und meine Sitzung ist in meinem WebView, also hat der httpclient es nicht und ich kann nicht auf den Inhalt des Webservice zugreifen.

Ich sehe viele Beiträge zu diesem Problem, aber ich habe die Lösung nicht verstanden.

Hier ist, was ich auf meinem onPageStarted getan habe:

%Vor%

Ich habe gesehen, dass ich solche Dinge habe, also hoffe ich, dass diese auch eine Sitzung beinhalten: (Ich entferne die Nummer)

%Vor%

Dann weiß ich nicht, was ich machen soll, um diesen Cookie in meinem httpclient zu setzen. Ich versuche das, ohne Erfolg:

%Vor%     
Dahevos 27.06.2012, 10:45
quelle

2 Antworten

15

Also, das habe ich getan und es hat für mich funktioniert -

%Vor%

Jetzt ist die Implementation für den getCookieFromAppCookieManager wie folgt -
Die Methode ruft die Cookies für eine bestimmte URL von der Anwendung CookieManager ab. Die Anwendung CookieManager verwaltet die Cookies, die von den WebView-Instanzen einer Anwendung verwendet werden.

%Vor%     
user2405598 09.07.2013 16:08
quelle
10

Folge diesem Tuto:

Ссылка

=============================== Hier der Inhalt der Webseite =====

Etwas, das Sie bei Android finden könnten, ist die Web-Authentifizierung. Die meisten Websites geben ein Cookie aus, um Sitzungs-IDs zu verfolgen und einen Benutzer angemeldet zu halten. Um diese Authentifizierung aufrechtzuerhalten, müssen Cookies zwischen Aktivitäten und zwischen HTTP-Clients und Web-Views synchronisiert werden.

Die Methode, die ich am Ende gemacht habe und die gut genug zu funktionieren scheint, war, eine Klasse zu erstellen, die die Anwendung erweitert, und dann einen einzelnen HttpClient zu definieren, der im Rest der Anwendung verwendet wird. Dieser Code sieht folgendermaßen aus:

%Vor%

Diese Klasse erstellt auch einen HttpClient, der für AsyncTasks geeignet ist und mehrere gleichzeitige http-Anfragen erstellt. Mit ThreadSafeClientConnManager für den ClientConnectionManager können Sie HTTP-Anfragen innerhalb von AsyncTasks ausführen, ohne dass ein erzwungenes Schließen ausgelöst wird, wenn Sie die Zurück-Taste drücken und ein zweites oder drittes starten.

Außerdem wird ein einzelner Standard-Cookie-Speicher erstellt, auf den in allen Ihren Aktivitäten zugegriffen werden kann. Sie würden dies in Ihren anderen Aktivitäten verwenden, indem Sie die Methode getClient () aufrufen.

Zum Beispiel

%Vor%

Wenn Sie es für notwendig halten, ein Webview zu verwenden, benötigen Sie es, um auf dieselben Cookies wie Ihre Kunden zuzugreifen und diese zu verwenden. Sie können den Cookie-Speicher des Clients mithilfe von CookieManager synchronisieren: (in onPageStarted-Methode)

%Vor%

Sie müssen example.com mit der richtigen Domain wechseln.

    
Dahevos 02.07.2012 09:46
quelle