指定されたURL(URI)からデータを文字列としてダウンロードする最も簡単な方法は、WebClient.DownloadStringメソッドを使用する方法でしょう。このメソッドは、.NET Framework 2.0以降で使用できます。
下の例では、WebClient.DownloadStringメソッドを使用して「http://www.microsoft.com」のHTMLソースを取得して、その内容を表示しています。
'ダウンロード元の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)
//ダウンロード元の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メソッドを使用して「http://www.microsoft.com」からデータをダウンロードし、その内容を文字列に変換しています。
'ダウンロード元の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)
//ダウンロード元の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メソッドを使用して「http://www.microsoft.com」のHTMLソースを取得し、その内容を表示しています。
'ダウンロード元の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)
//ダウンロード元の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);