Skip to: Site menu | Main content

Email LinkedIn

Blog...

HTTP GET/POST using VB.NET and BackgroundWorker Class

A simple code example using VB.NET LAMDA's to create an inline BackgroundWorker object. I'm not a VB guru so there may be better ways to do this.

MY REQUIREMENTS:

  1. Inline (all started from a single CLICK event)
  2. Async HTTPWebRequest
  3. Populate ComboBox/Input with JSON formatted request results
  4. VB.NET

Dim requestWorker As BackgroundWorker = New BackgroundWorker()

AddHandler requestWorker.DoWork, Sub(workerSender As Object, workerEvent As System.ComponentModel.DoWorkEventArgs)

Dim request As HttpWebRequest = CType(WebRequest.Create("http://www.contoso.com/somepage.html"), HttpWebRequest)

request.Method = "POST" ' Also "GET" allowed

' For POST operations request, not required for GET

Dim data As String = "var1=1&var2=2&var3=test"

request.ContentType = "application/x-www-form-urlencoded"

request.ContentLength = System.Text.Encoding.ASCII.GetBytes(data).Length

Dim requestStreamWriter As StreamWriter = New StreamWriter(request.GetRequestStream())

requestStreamWriter.Write(data)

requestStreamWriter.Flush()

requestStreamWriter.Close()

' End POST operation requirements

Dim response As String = New StreamReader(resourcesRequest.GetResponse().GetResponseStream(), System.Text.Encoding.UTF8).ReadToEnd()

Dim results As Dictionary(Of String, Object) = New Script.Serialization.JavaScriptSerializer().Deserialize(Of Dictionary(Of String, Object))(response)

' Do something with the results
If results.ContainsKey("Response") Then

' Allows cross thread input manipulation
Me.Invoke(Sub(Items As Dictionary(Of String, Object))

Me.cmbMyList.Items.Clear()

For Each Item In results.Item("Response")

Me.cmbResource.Items.Add(Item.value)

Next

End Sub, results)

End If

End Sub

requestWorker.RunWorkerAsync()

Comments (Comment Moderation is enabled. Your comment will not appear until approved.)