HttpClient
A network access takes some time to finish. This causes a pause in our program's execution. With Async and Await we use HttpClient
to download pages in a better way.
With asynchronous programming, we download files without interrupting other parts of our program. Many details are required to use HttpClient
.
Let us examine this simple program. We first add an "Imports System.Net.Http
" statement at the top. In Main
we create a Task.
Sub
DownloadPageAsync
with the AddressOf
operator. This Sub
is run when the Task starts.HttpClient
instance in a Using-statement. This ensures disposal of resources.GetAsync
, Content and ReadAsStringAsync
to download the web file with HttpClient
.Imports System.Net.Http Module Module1 Sub Main() ' Create new Task. ' ... Use AddressOf to reference a method. Dim t As Task = New Task(AddressOf DownloadPageAsync) ' Start the task. t.Start() ' Print a message as the page downloads. Console.WriteLine("Downloading page...") Console.ReadLine() End Sub Async Sub DownloadPageAsync() Dim page As String = "http://en.wikipedia.org/" ' Use HttpClient in Using-statement. ' ... Use GetAsync to get the page data. Using client As HttpClient = New HttpClient() Using response As HttpResponseMessage = Await client.GetAsync(page) Using content As HttpContent = response.Content ' Get contents of page as a String. Dim result As String = Await content.ReadAsStringAsync() ' If data exists, print a substring. If result IsNot Nothing And result.Length > 50 Then Console.WriteLine(result.Substring(0, 50) + "...") End If End Using End Using End Using End Sub End ModuleDownloading page... <!DOCTYPE html> <html lang="en" dir="ltr" class="c...
HttpClient
is a more advanced class
, and was added later, than other classes like WebClient
. This class
is built for asynchronous use.
For downloading web pages, it is better to enable and support GZIP compression. Another header can be added to HttpClient
. We can use VB.NET to decompress these files.
HttpClient
is a powerful class
. And it is an effective way to download web pages and other files through HTTP (a protocol).