Sie müssen ein Objekt verwenden, das mit dem Speichern von Cookies umgehen kann. In diesem Fall benötigen Sie die Klasse HttpWebRequest
. Sie benötigen außerdem eine CookieContainer
, um Authentifizierungscookies zu verwalten.
Um dies zu tun, würden Sie:
- erstellen
CookieContainer
Objekt (ein Keksdose), dass Sie den Überblick über den ganzen Umfang von jeder bitten Sie machen halten.
- Erstellen Sie eine
HttpWebRequest
, die sich auf der Website anmeldet, auf die Sie zugreifen.
- Verwenden Sie die
CookieContainer
, die Sie in Schritt 1 für jede nachfolgende Anforderung erstellt haben.
Unten ist ein Beispiel dafür, wie die HttpWebRequest zu verwenden, HttpWebResponse und CookieContainer Klassen zusammen, um eine einfache Anfrage zu machen, die einige Cookies, und dann auf eine nachfolgende Anforderung diese Cookies verwenden. Der Rest sollte einfach unter der Annahme alles gut Markup gebildet wird;)
CookieContainer cookieJar = new CookieContainer();
var webRequest = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com");
webRequest.CookieContainer = cookieJar;
var webResponse = webRequest.GetResponse();
using (var reader = new StreamReader(webResponse.GetResponseStream()))
{
Response.Write(reader.ReadToEnd());
}
var anotherWebRequest = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com/search?q=stackoverflow.com");
anotherWebRequest.CookieContainer = cookieJar;
webResponse = anotherWebRequest.GetResponse();
Eine weitere Option (wenn Sie wirklich die WebClient
Klasse verwenden möchten) würde die ResponseHeaders
Eigenschaft der Klasse parsen, sobald Sie Ihr gemacht haben fordern Sie an und fügen Sie bei Ihrer nächsten Anfrage die entsprechenden Cookies hinzu. Dies ist jedoch ein wenig komplizierter, da Sie Ihre Cookies manuell verwalten müssen.
Da ich davon ausgehe, dass Sie Ihre Webantworten als XML durchqueren möchten, schlage ich vor, dass Sie in die Open Source-Bibliothek HtmlAgilityPack schauen. Sie können Markup von einer Website senden, die (wahrscheinlich) nicht korrekt formatiert ist, oder ein ungültiges Markup enthält, und dann die ungültigen Teile so korrigieren, dass Sie sie wie XML durchqueren können.