HttpClientクラスで、GET要求にて指定URL(URI)から非同期でデータをダウンロードする方法を記載します。
・System.Netをインポートする
GetStringAsync()メソッドにて、URL(URI)から文字列としてダウンロードする
Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click DirectCast(sender, Button).Enabled = False Dim url As Uri = New Uri("http://microsoft.com") Dim html As String Using HttpCl As New HttpClient() html = Await HttpCl.GetStringAsync(url) End Using 'ダウンロードしたデータを表示する Console.WriteLine(html) DirectCast(sender, Button).Enabled = True End Sub
GetByteArrayAsync()メソッドにて、URLからバイナリーデータとしてダウンロードする
Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click DirectCast(sender, Button).Enabled = False Dim url As Uri = New Uri("http://microsoft.com") Using HttpCl As New HttpClient() Data = Await HttpCl.GetByteArrayAsync(url) End Using 'ダウンロードしたデータを表示する Dim str As String = System.Text.Encoding.UTF8.GetString(Data) 'バイト配列を文字列に変換 Console.WriteLine(str) DirectCast(sender, Button).Enabled = True End Sub
GetStreamAsync()メソッドにて、URLからストリームで読み込む
Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click DirectCast(sender, Button).Enabled = False Dim url As Uri = New Uri("http://microsoft.com") Dim str As String Using HttpCl As New HttpClient() Dim dt As System.IO.Stream = Await HttpCl.GetStreamAsync(url) 'データを読み取るStreamを開く Dim sr As New System.IO.StreamReader(dt, System.Text.Encoding.UTF8) str = sr.ReadToEnd() dt.Close() End Using 'ダウンロードしたデータを表示する Console.WriteLine(str) DirectCast(sender, Button).Enabled = True End Sub
GetAsync()メソッドで、URL(URI)からダウンロードする
Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click DirectCast(sender, Button).Enabled = False Dim url As Uri = New Uri("http://microsoft.com") Dim str As String Using HttpCl As New HttpClient() 'ヘッダー部作成 HttpCl.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko") HttpCl.DefaultRequestHeaders.Add("Accept-Language", "ja-JP") HttpCl.Timeout = TimeSpan.FromSeconds(5.0) Using response = Await HttpCl.GetAsync(url) str = Await response.Content.ReadAsStringAsync() End Using End Using 'ダウンロードしたデータを表示する Console.WriteLine(str) DirectCast(sender, Button).Enabled = True End Sub