クッキーを使用する方法

WebClientによる方法

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

HttpWebRequestによる方法

 

Microsoft Learnから検索