WebRequest.BeginGetRequestStream provides an asynchronous version of the GetRequestStream method.
Imports System
Imports System.Net
Imports System.IO
Imports System.Text
Imports System.Threading
Imports Microsoft.VisualBasic
Public Class RequestState
Public request As WebRequest
Public Sub New()
request = Nothing
End Sub ' New
End Class ' RequestState
Class WebRequest_BeginGetRequeststream
Public Shared allDone As New ManualResetEvent(False)
Shared Sub Main()
Dim myWebRequest As WebRequest = WebRequest.Create("http://www.domain.com/")
Dim myRequestState As New RequestState()
myRequestState.request = myWebRequest
myWebRequest.ContentType = "application/x-www-form-urlencoded"
myRequestState.request.Method = "POST"
Dim r As IAsyncResult = CType(myWebRequest.BeginGetRequestStream(AddressOf ReadCallback, myRequestState), IAsyncResult)
allDone.WaitOne()
Dim myWebResponse As WebResponse = myWebRequest.GetResponse()
Dim streamResponse As Stream = myWebResponse.GetResponseStream()
Dim streamRead As New StreamReader(streamResponse)
Dim readBuff(256) As [Char]
Dim count As Integer = streamRead.Read(readBuff, 0, 256)
While count > 0
Dim outputData As New [String](readBuff, 0, count)
Console.WriteLine(outputData)
count = streamRead.Read(readBuff, 0, 256)
End While
streamResponse.Close()
streamRead.Close()
myWebResponse.Close()
End Sub
Private Shared Sub ReadCallback(asynchronousResult As IAsyncResult)
Dim myRequestState As RequestState = CType(asynchronousResult.AsyncState, RequestState)
Dim myWebRequest As WebRequest = myRequestState.request
Dim streamResponse As Stream = myWebRequest.EndGetRequestStream(asynchronousResult)
Dim postData As String = Console.ReadLine()
Dim encoder As New ASCIIEncoding()
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
streamResponse.Write(byteArray, 0, postData.Length)
streamResponse.Close()
allDone.Set()
End Sub
End Class
Related examples in the same category