DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

認証が必要なページをダウンロードする

認証が必要なページ(ユーザー名とパスワードが必要なページ)をWebRequest、WebResponseクラスを使ってダウンロードする方法を紹介します。この場合、WebRequest.Credentialsプロパティを適切に設定します。

ヘルプによると、NetworkCredentialクラスは、基本認証、ダイジェスト認証、NTLM認証、Kerberos認証に対応しており、SSLクライアント認証などの公開キーに基づく認証方式はサポートしていないとのことです。

次の例では認証が必要なページ"http://localhost/member/"のユーザー名が"username"、パスワードが"password"として、ページの内容を取得しています。

VB.NET
コードを隠すコードを選択
'HttpWebRequestの作成
Dim webreq As System.Net.HttpWebRequest = _
    CType(System.Net.WebRequest.Create("http://localhost/member/"), _
        System.Net.HttpWebRequest)

'認証の設定
webreq.Credentials = New System.Net.NetworkCredential("username", "password")

'HttpWebResponseの取得
Dim webres As System.Net.HttpWebResponse = _
    CType(webreq.GetResponse(), System.Net.HttpWebResponse)

'受信して表示
Dim st As System.IO.Stream = webres.GetResponseStream()
Dim sr As New System.IO.StreamReader(st)
Console.WriteLine(sr.ReadToEnd())
'閉じる
sr.Close()
st.Close()
C#
コードを隠すコードを選択
//HttpWebRequestの作成
System.Net.HttpWebRequest webreq = (System.Net.HttpWebRequest)
    System.Net.WebRequest.Create("http://localhost/member/");

//認証の設定
webreq.Credentials =
    new System.Net.NetworkCredential("username", "password");

//HttpWebResponseの取得
System.Net.HttpWebResponse webres =
    (System.Net.HttpWebResponse) webreq.GetResponse();

//受信して表示
System.IO.Stream st = webres.GetResponseStream();
System.IO.StreamReader sr = new System.IO.StreamReader(st);
Console.WriteLine(sr.ReadToEnd());
//閉じる
sr.Close();
st.Close();

なお、NetworkCredentialコンストラクタの3番目のパラメータにユーザー名が属するドメインまたは領域を指定することもできます。

ここではHttpWebRequest、HttpWebResponseクラスを使用しましたが、WebClientクラスのCredentialsプロパティでも同様に、認証の方法を指定してダウンロードすることができます。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。