C# – さらっと「WebClient」

インターネット上のデータを取得したくなった。

インターネット経由で情報を取得する方法のうちの一つ。

System.Net.WebClientクラスを利用してみる。

(C#1.2以降)

WebClientクラス

System.Net.WebClientクラスはURIからデータ送信とデータ受信を行ってくれるクラスです。

URIとはUniformResourceIdentifierの略称で、リソースの識別子である。ここでは詳細には言及しない。今回はその識別子が示すリソースを取得し利用することが主題である。

試しにこのgoogleのHTMLを取得して表示してみる。

public class WebClientSample01{
    public static void Main(){
        using(var client = new System.Net.WebClient()){
            var uri = @"https://google.com";
            client.Encoding = System.Text.Encoding.UTF8;
            var html = client.DownloadString(uri);
            System.Console.WriteLine(html);
        }
    }
}

出力はgoogleトップのhtmlが出力される。

内容は単純で、6行目のstring DownloadString(string)で、4行目で指定したuriからデータをダウンロードして、出力するだけ。3行目はWebClientがIDsipose(正確にはComponentが実装していてそれを継承している)を実装しているのでusingステートメントでのリソースの自動解放をしている。

上記は簡潔にしたかったので記述していないが、実際に利用する時はtry-catchステートメントでSystem.Net.WebException例外をcatchしてやったほうがいいと思われる。

また、WebClientには

public System.IO.Stream OpenRead      (string address);
public byte[]           DownloadData  (string address);
public void             DownloadFile  (string address, string fileName);
public string           DownloadString(string address);

といったインターネット上のリソースを色んな型で取得するメソッドを持っており、必要に応じてそれぞれを利用できる。これらに合わせてAsync、つまり非同期的に取得してくれる、

public void OpenReadAsync      (Uri address);
public void DownloadDataAsync  (Uri address);
public void DownloadFileAsync  (Uri address, string fileName);
public void DownloadStringAsync(Uri address);

もあることを覚えておく。インターネット上のリソースへのアクセスはどうしても重い処理になりがちなので、利用できるならこちらを利用していきたい。
各メソッドの通知を受け取るには、OnXXXCompleted(XXXCompletedEventArgs)イベントハンドラメソッドを実装しEvent XXXCompletedに追加してやればOK。

WebClient自体は読み込みだけでなく書き込みにも対応しているようだが、今回はこれもスルーする。

これでインターネット上の資源にもアクセスすることが出来るようになりました。
これを利用して出来ることはたくさんありそうなので、色々考えたいと思います。

カテゴリーC#

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です