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

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

.NET Framework 2.0以降で、WebClient.DownloadStringメソッドを使用する方法

指定されたURL(URI)からデータを文字列としてダウンロードする最も簡単な方法は、WebClient.DownloadStringメソッドを使用する方法でしょう。このメソッドは、.NET Framework 2.0以降で使用できます。

下の例では、WebClient.DownloadStringメソッドを使用して「http://www.microsoft.com」のHTMLソースを取得して、その内容を表示しています。

VB.NET
コードを隠すコードを選択
'ダウンロード元のURL
Dim url As String = "http://www.microsoft.com"

'WebClientを作成
Dim wc As New System.Net.WebClient()
'文字コードを指定
wc.Encoding = System.Text.Encoding.UTF8
'データを文字列としてダウンロードする
Dim source As String = wc.DownloadString(url)
'後始末
wc.Dispose()

'ダウンロードしたデータを表示する
Console.WriteLine(source)
C#
コードを隠すコードを選択
//ダウンロード元のURL
string url = "http://www.microsoft.com";

//WebClientを作成
System.Net.WebClient wc = new System.Net.WebClient();
//文字コードを指定
wc.Encoding = System.Text.Encoding.UTF8;
//データを文字列としてダウンロードする
string source = wc.DownloadString(url);
//後始末
wc.Dispose();

//ダウンロードしたデータを表示する
Console.WriteLine(source);

この例では取得するHTMLソースの文字コードがUTF-8のため、WebClient.Encodingプロパティに「Encoding.UTF8」を設定していますが、別の文字コードの場合は別のEncodingオブジェクトを設定する必要があります。詳しくは、「目的の文字コードに合ったEncodingオブジェクトを取得する」をご覧ください。

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

WebClient.DownloadStringメソッドは同期的にダウンロードを行うため、ダウンロードが終了するまでスレッドがブロックされます。非同期的にダウンロードするには、WebClient.DownloadStringAsyncメソッドを使用します。DownloadStringAsyncメソッドの使い方は、「ファイルをダウンロードし保存する」で紹介しているWebClient.DownloadDataAsyncメソッドとほぼ同じですので、そちらを参考にしてください。

WebClient.DownloadDataメソッドを使用する方法

WebClient.DownloadDataメソッドを使用すれば、バイト配列でデータを取得することができます。取得したデータは、「バイト型配列のデータを文字コードを指定して文字列に変換する」のように文字列に変換したり、「バイト型配列をファイルに書き込む」のようにファイルに保存することができます。

次の例では、WebClient.DownloadDataメソッドを使用して「http://www.microsoft.com」からデータをダウンロードし、その内容を文字列に変換しています。

VB.NET
コードを隠すコードを選択
'ダウンロード元のURL
Dim url As String = "http://www.microsoft.com"

'WebClientを作成
Dim wc As New System.Net.WebClient()
'データをバイト配列としてダウンロードする
Dim sourceData As Byte() = wc.DownloadData(url)
'後始末
wc.Dispose()

'バイト配列を文字列に変換
Dim source As String = System.Text.Encoding.UTF8.GetString(sourceData)

'ダウンロードしたデータを表示する
Console.WriteLine(source)
C#
コードを隠すコードを選択
//ダウンロード元のURL
string url = "http://www.microsoft.com";

//WebClientを作成
System.Net.WebClient wc = new System.Net.WebClient();
//データをバイト配列としてダウンロードする
byte[] sourceData = wc.DownloadData(url);
//後始末
wc.Dispose();

//バイト配列を文字列に変換
string source = System.Text.Encoding.UTF8.GetString(sourceData);

//ダウンロードしたデータを表示する
Console.WriteLine(source);

WebClient.OpenReadメソッドを使用する方法

WebClient.OpenReadメソッドを使ってデータをダウンロードすることもできます。

次の例では、WebClient.OpenReadメソッドを使用して「http://www.microsoft.com」のHTMLソースを取得し、その内容を表示しています。

VB.NET
コードを隠すコードを選択
'ダウンロード元のURL
Dim url As String = "http://www.microsoft.com"

'WebClientオブジェクトを作成
Dim wc As New System.Net.WebClient()
'データを読み取るためのStreamを開く
Dim st As System.IO.Stream = wc.OpenRead(url)
'文字コードを指定してStreamReaderを作成
Dim sr As New System.IO.StreamReader(st, System.Text.Encoding.UTF8)
'データを最後まで読み込む
Dim source As String = sr.ReadToEnd()
'後始末
st.Close()
wc.Dispose()

'ダウンロードしたデータを表示する
Console.WriteLine(source)
C#
コードを隠すコードを選択
//ダウンロード元のURL
string url = "http://www.microsoft.com";

//WebClientオブジェクトを作成
System.Net.WebClient wc = new System.Net.WebClient();
//データを読み取るためのStreamを開く
System.IO.Stream st = wc.OpenRead(url);
//文字コードを指定してStreamReaderを作成
System.IO.StreamReader sr =
    new System.IO.StreamReader(st, System.Text.Encoding.UTF8);
//データを最後まで読み込む
string source = sr.ReadToEnd();
//後始末
st.Close();
wc.Dispose();

//ダウンロードしたデータを表示する
Console.WriteLine(source);
  • 履歴:
  • 2007/1/20 「.NET Framework 2.0以降で、DownloadStringメソッドを使う方法」を追加。
  • 2014/8/21 WebClient.DownloadStringメソッドを使用する方法をトップに移動。WebClient.DownloadDataメソッドを使用する方法を追加。サンプルのダウンロード先のURLを変更など。

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

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。