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

ファイルをダウンロードし表示する

まずはWebClient.OpenReadメソッドを使って、指定したURLのHTMLソースを取得する方法を紹介します。

次の例では、Yahoo! JAPANのトップページ(http://www.yahoo.co.jp)のソースを取得し、その内容を出力しています。Yahoo! Japanのページの文字コードはEUCですので、EUC文字としてエンコードする必要があります。文字コードがシフトJISならばGetEncodingメソッドに「932」、JISならば「50220」を指定します。文字コードの指定について詳しくは、「文字コードを指定してテキストファイルを読み込む」をご覧ください。

VB.NET
コードを隠すコードを選択
Dim wc As New System.Net.WebClient()
Dim st As System.IO.Stream = wc.OpenRead("http://www.yahoo.co.jp")
'ここを変更、EUC文字としてエンコードする
Dim sr As New System.IO.StreamReader( _
    st, System.Text.Encoding.GetEncoding(51932))
Console.WriteLine(sr.ReadToEnd())
st.Close()
wc.Dispose()
C#
コードを隠すコードを選択
System.Net.WebClient wc = new System.Net.WebClient();
System.IO.Stream st = wc.OpenRead("http://www.yahoo.co.jp");
//ここを変更、EUC文字としてエンコードする
System.IO.StreamReader sr =
    new System.IO.StreamReader(
        st, System.Text.Encoding.GetEncoding(51932));
Console.WriteLine(sr.ReadToEnd());
st.Close();
wc.Dispose();
補足:WebClient.DownloadDataメソッドを使用すれば、バイト型配列でデータを取得できます。取得したデータは、「バイト型配列のデータを文字コードを指定して文字列に変換する」により文字列に変換したり、「バイト型配列をファイルに書き込む」によりファイルに保存できます。

.NET Framework 2.0以降で、DownloadStringメソッドを使う方法

.NET Framework 2.0以降では、さらに簡単な方法があります。DownloadStringメソッドで指定したURLのHTMLソースをダウンロードできます。

VB.NET
コードを隠すコードを選択
'ダウンロードするURL
Dim url As String = "http://www.yahoo.co.jp/"

'WebClientの作成
Dim wc As New System.Net.WebClient()
'文字コードを指定
wc.Encoding = System.Text.Encoding.GetEncoding(51932)
'HTMLソースをダウンロードする
Dim sorce As String = wc.DownloadString(url)
'後始末
wc.Dispose()

'表示する
Console.WriteLine(sorce)
C#
コードを隠すコードを選択
//ダウンロードするURL
string url = "http://www.yahoo.co.jp/";

//WebClientの作成
System.Net.WebClient wc = new System.Net.WebClient();
//文字コードを指定
wc.Encoding = System.Text.Encoding.GetEncoding(51932);
//HTMLソースをダウンロードする
string sorce = wc.DownloadString(url);
//後始末
wc.Dispose();

//表示する
Console.WriteLine(sorce);
補足:ダウンロードしたデータは、基本的には、WebClient.Encodingプロパティで指定されたエンコーディングを使用して文字列に変換されます。ただし、要求のヘッダにContentTypeが指定されている場合は、こちらが優先されるようです。

DownloadStringAsyncにより、非同期的にダウンロードすることもできます。使い方は、こちらで紹介しているDownloadDataAsyncメソッドとほぼ同じです。

  • 履歴:
  • 2007/1/20 「.NET Framework 2.0以降で、DownloadStringメソッドを使う方法」を追加。

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

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