2010-06-04 9 views
23

Ich erstelle eine Anwendung für den Datenabruf von der Webseite. Die Seite ist passwortgeschützt und wenn sich der Benutzer anmeldet, wird der Cookie erstellt.Wie verwendet man Cookies mit HttpWebRequest

Um die Daten abzurufen, muss sich die Anwendung zuerst anmelden: Web-Anfrage mit Benutzername und Passwort erstellen und den Cookie speichern. Wenn der Cookie gespeichert ist, muss er in die Header aller Anfragen eingefügt werden.

hier ist die Methode, die Anfragen und ruft den Inhalt macht:

public void getAsyncDailyPDPContextActivationDeactivation() 
    { 
     HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(dailyPDPContextActivationDeactivation); 

     IAsyncResult asyncResult = httpWebRequest.BeginGetResponse(null, null); 

     asyncResult.AsyncWaitHandle.WaitOne(); 

     using (HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.EndGetResponse(asyncResult)) 
     using (StreamReader responseStreamReader = new StreamReader(httpWebResponse.GetResponseStream())) 
     { 
      string responseText = responseStreamReader.ReadToEnd(); 
     } 

    } 

Wer weiß, wie diese Methode zu ändern, um ein Cookie in den Header hinzufügen?

Unten ist der Druckbildschirm der Header-Struktur der mit dem Browser vorgenommen Anfrage:

alt text http://img404.imageshack.us/img404/4793/cookiea.jpg

ich auch dankbar wäre, wenn jemand eine Möglichkeit zum Speichern von Cookie aus der Antwort (wenn die Anwendung macht vorgeschlagen eine Anfrage http: xxx.xxx.xxx/login? Benutzername = xxx & Passwort = xxx der Cookie wird erstellt und muss für zukünftige Anfragen gespeichert werden).

Antwort

32
CookieContainer cookieContainer = new CookieContainer(); 
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(...); 
httpWebRequest.CookieContainer = cookieContainer; 

Verwenden Sie dann wieder verwenden Sie das Cookie in nachfolgenden Anforderungen:

HttpWebRequest httpWebRequest2 = (HttpWebRequest)WebRequest.Create(...); 
httpWebRequest2.CookieContainer = cookieContainer; 
+1

ich es eigentlich gar nicht bekommen. Warum sollten Sie einen frisch erstellten Cookiecontainer (also leer) in die Anfrage einfügen, die Sie gerade senden möchten? Sollte es nicht viel logischer sein, dass Sie diesen cookieContainer später mit der Antwort füllen müssen? Gibt es einen Grund, warum es so ist? edit: Auf diese Weise werden viele Antworten gegeben, aber ich kann einfach nicht herausfinden, warum es so gemacht wurde. – deltu100

+0

Meine Anwendung hat ein unerwünschtes Verhalten. Die Verwendung von httpWebRequest2.Headers.Set ("Cookie", ... funktioniert einwandfrei. – Eduardo

+0

Wenn ich mich vorher auf der Webseite angemeldet habe, ist auf meiner HD ein Cookie gespeichert, so dass ich die Anmeldung programmatisch überspringen kann Die Web-Anfrage sucht automatisch nach Inhalten und füllt sie mit gefundenen Cookies, oder müssen Sie das manuell tun? Wie macht man das, wenn letzteres? –

Verwandte Themen