Cookie の保存を処理できるオブジェクトを使用する必要があります。この場合、HttpWebRequest
クラスが必要になります。CookieContainer
認証 Cookie を管理するには、 も必要です。
これを行うには、次のようにします。
- 作成する
CookieContainer
すべてのリクエストのスコープ全体で追跡できるオブジェクト (Cookie jar) を作成します。
HttpWebRequest
アクセスしているサイトにログインする を作成します。
CookieContainer
以降のすべてのリクエストに対して、ステップ 1 で作成した を使用します。
以下は、HttpWebRequest、HttpWebResponse、およびCookieContainerクラスを一緒に使用して、いくつかの Cookie を設定する単純な要求を作成し、その後の要求でそれらの Cookie を使用する方法の例です。すべてが適切に形成されたマークアップであれば、残りは簡単なはずです ;)
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();
別のオプション (本当にWebClient
クラスを使用したい場合) は、リクエストを行った後にクラスのプロパティを解析し、ResponseHeaders
次のリクエストに適切な Cookie を含めることです。ただし、Cookie を手動で管理する必要があるため、これは少し複雑です。
Web 応答を XML としてトラバースできるようにしたいと考えているので、オープン ソース ライブラリのHtmlAgilityPackを調べることをお勧めします。これを使用すると、(ほとんどの場合) 整形式でない Web サイト、または何らかの無効なマークアップが含まれている Web サイトからマークアップを送信し、無効な部分を修正して、XML のようにトラバースできるようにすることができます。