ファイルをダウンロードし表示するまずはWebClient.OpenReadメソッドを使って、指定したURLのHTMLソースを取得する方法を紹介します。 次の例では、Yahoo! JAPANのトップページ(http://www.yahoo.co.jp)のソースを取得し、その内容を出力しています。Yahoo! Japanのページの文字コードはEUCですので、EUC文字としてエンコードする必要があります。文字コードがシフトJISならばGetEncodingメソッドに「932」、JISならば「50220」を指定します。文字コードの指定について詳しくは、「文字コードを指定してテキストファイルを読み込む」をご覧ください。 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() 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ソースをダウンロードできます。 'ダウンロードする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) //ダウンロードする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メソッドとほぼ同じです。
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。
|
|
Copyright(C) DOBON!. All rights reserved.
|