HttpWebRequest und HttpWebResponse: Aufrechterhaltung Zustand für aufeinanderfolgende Abfragen in Anforderung protokolliert

StackOverflow https://stackoverflow.com/questions/1036854

Frage

Ich habe ein paar HttpWebRequests und HttpWebResponses miteinander verkettet, auch Cookie verwendet wird.

Der Code simuliert einen Benutzer geht durch drei verschiedene Seiten ‚Ich bin damit einverstanden‘, die die Cookie Info-Set, der Einloggen mit Benutzername und Passwort an einem vierten und machen eine POST (Suche) auf dem fünften die Antwort als String zurück.

Gibt es eine Möglichkeit ich das HttpWebRequest Objekt halten kann als ‚angemeldet‘ jedes Mal gehen durch diese Schritte zu vermeiden, jeder Benutzer eine Suche durchführt?

Kann ich es einrichten als statisch, und wenn sie null oder fehlt Cookie info es sonst durch alle Schritte ausgeführt werden kann tun nur die Post der Benutzer erfordert? Was ist ein gutes Muster für das?.

War es hilfreich?

Lösung

Wenn der Server, den Sie in protokollieren Cookie basierte Authentifizierung verwendet, dann müssen Sie eine System.Net.CookieContainer erstellen, in dem Sie das Authentifizierungscookie speichern. Das ist ganz einfach:

CookieContainer container = new CookieContainer();

// Create web request
request.CookieContainer = container;

// Create next web request
nextRequest.CookieContainer = container;

// And so on
...

Wiederverwendung einfach das Cookie Objekt für alle HttpWebRequest Objekte und für die spätere Verwendung im Speicher halten.

Die Cookie ist Serializable, so dass Sie es auf der Festplatte bestehen bleiben können, wenn Sie benötigen. Das ermöglicht es Ihnen, Ihre Cookies zu halten (s), auch wenn Ihre Benutzer startet die Anwendung.

Alternativ, wenn die Seite keine Cookies verwenden, sondern speichert die Session-ID in der URL statt, müssen Sie Pass entlang der Session-ID in der URL der Seiten, die Sie wisit zu halten. hängen Sie ihn einfach auf die URL und es sollte funktionieren. : -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top