WebClientクラスにはクッキーに対する操作手段が提供されていないため、クッキーを扱うことができません。
一方HttpWebRequestクラスには、クッキーに関するプロパティが用意されてます。ですのでWebClientを継承したクラスからWebRequestオブジェクトを取得することで、WebClientからクッキーを使用できるようになります。ここでは、その方法について解説します。
WebClientを継承したクラスを作成します。
class WebClientEx : System.Net.WebClient { private CookieContainer cookieContainer; public CookieContainer CookieContainer { get { return cookieContainer; } set { cookieContainer = value; } } protected override WebRequest GetWebRequest( Uri uri ) { WebRequest webRequest = base.GetWebRequest( uri ); if( webRequest is HttpWebRequest ) { HttpWebRequest httpWebRequest = ( HttpWebRequest )webRequest; httpWebRequest.CookieContainer = this.cookieContainer; } return webRequest; } }
HttpWebRequestクラスに対する操作と同様の手段で、クッキーを設定できます。
WebClientEx webClientEx = new WebClientEx(); webClientEx.CookieContainer = new CookieContainer(); webClientEx.CookieContainer.Add( new Cookie( "name", "value" ) ); string reply = webClientEx.DownloadString( uri );