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 );