Web サーバーからファイルをダウンロードしようとしています。
http://web.server.com/getfile=2
自分自身を認証し、ファイルへのアクセスを許可する Cookie を表示できるため、Web ブラウザーでこれを行うことができます。
私はかなりの調査を行い、Cookie コンテナーが Cookie を保持すると信じていますが、CookieContainer を使用して C# 内からこのファイルをダウンロードする方法を特定することはできません。
C# では、WebClient を使用する必要があります。独立して使用できますが、このようなコードを使用すると、毎回 Cookie ヘッダーを追加するという頭痛の種が軽減されます。
public class CookieAwareWebClient : WebClient
{
private readonly CookieContainer m_container = new CookieContainer();
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
HttpWebRequest webRequest = request as HttpWebRequest;
if (webRequest != null)
{
webRequest.CookieContainer = m_container;
}
return request;
}
}
Cookie を含むページに対して HTTP 取得要求を行い、Cookie を保存して、getfile への 2 番目の要求に添付します。
ToDo: サンプルを追加する