آموزش ساخت یک Web Request در VB.Net

MDP

Well-Known Member
آموزش ساخت یک Web Request در VB.Net

سلام!

شما حتما شده تا حالا خواسته باشید که یک Request رو از برنامتون به یک صفحه روی وب ارسال کنید.

برای مثال شما می خواین وقتی کاربر برنامتون روی دکمه لوگین کلیک کرد برنامه به سرور وصل ببشه و Username و Password رو چک کنه!

مواد لازم!
Vs.net 2003

خوب شروع می کنیم!

برای این کار شما ابتدا باید یه کلاس بسازید توی این کلاس رو به شکل زیر پر کنید!

این کلاس همون web request ما رو درست می کنه!

clsWebRequest
کد:
[LEFT]
Imports System
Imports System.Net
Imports System.IO
Imports System.Text
Imports System.Threading
Imports Microsoft.VisualBasic
Public Enum ReqEvent
    SE_POSTINGDATA = &H0
    SE_REQUESTINGHEADER = &H1
    SE_HEADERRECEIVED = &H2
    SE_DOWNLOADING = &H4
    SE_COMPLETED = &H5
    SE_REDIRECTED = &H6
    SE_REQUESTFAILED = &H10
    SE_REQUESTABORTED = &H11
End Enum

Public Class RequestState
    Private Shared BUFFER_SIZE As Integer = 1024
    Public Data As StringBuilder
    Public Buffer() As Byte
    Public Request As HttpWebRequest
    Public Response As HttpWebResponse
    Public ResponseStream As Stream
    Public StatusCallback As StatusCallbackDelegate
    Public ByteLen As Long
    Public lResumeStart As Long
    Public OutputFileStream As FileStream

    Public Sub New()
        Buffer = New Byte(BUFFER_SIZE) {}
        Request = Nothing
        ResponseStream = Nothing
        StatusCallback = Nothing
        ByteLen = 0
    End Sub

    Protected Overrides Sub Finalize()
        Data = Nothing
        Call Buffer.Clear(Buffer, 0, Buffer.LongLength)
        If Not Request Is Nothing Then Call Request.Abort() : Request = Nothing
        If Not Response Is Nothing Then Call Response.Close() : Response = Nothing
        If Not ResponseStream Is Nothing Then Call ResponseStream.Close() : ResponseStream = Nothing
        If Not StatusCallback Is Nothing Then StatusCallback = Nothing
        MyBase.Finalize()
    End Sub
End Class

Public Delegate Sub StatusCallbackDelegate(ByVal StatusEvent As ReqEvent, ByVal lBytesComplete As Long, ByVal lBytesTotal As Long, ByVal iPercent As Integer)

Public Class clsWebRequest
    Private Shared BUFFER_SIZE As Integer = 1024
    Private Shared ReqState As RequestState
    Private Shared ReqThread As Thread
    Private Shared sOutputFile As String
    Private Shared sPostData As String
    Private Shared bCancel As Boolean
    Private Shared bUseSmartRedirection As Boolean
    Private Shared bResume As Boolean
    Private Shared sResumeData As String

    Public Property StatusCallBack() As StatusCallbackDelegate
        Get
            Return ReqState.StatusCallback
        End Get
        Set(ByVal Value As StatusCallbackDelegate)
            ReqState.StatusCallback = Value
        End Set
    End Property

    Public Property ResponseObj() As HttpWebResponse
        Get
            Return ReqState.Response
        End Get
        Set(ByVal Value As HttpWebResponse)
            ReqState.Response = Value
        End Set
    End Property

    Public Property RequestObj() As HttpWebRequest
        Get
            Return ReqState.Request
        End Get
        Set(ByVal Value As HttpWebRequest)
            ReqState.Request = Value
        End Set
    End Property

    Public Property OutputFile() As String
        Get
            Return sOutputFile
        End Get
        Set(ByVal Value As String)
            sOutputFile = Value
        End Set
    End Property

    Public Property DataToPost() As String
        Get
            Return sPostData
        End Get
        Set(ByVal Value As String)
            sPostData = Value
        End Set
    End Property

    Public Property UseSmartRedirection() As Boolean
        Get
            Return bUseSmartRedirection
        End Get
        Set(ByVal Value As Boolean)
            bUseSmartRedirection = Value
        End Set
    End Property

    Public Property DoResume() As Boolean
        Get
            Return bResume
        End Get
        Set(ByVal Value As Boolean)
            bResume = Value
        End Set
    End Property

    Public Property ResumeData() As String
        Get
            Return sResumeData
        End Get
        Set(ByVal Value As String)
            sResumeData = Value
        End Set
    End Property

    Public ReadOnly Property Data() As String
        Get
            Return ReqState.Data.ToString
        End Get
    End Property

    Public ReadOnly Property RequestUsed() As String
        Get
            If Not ReqState.Request Is Nothing Then
                Dim sRequest As String
                sRequest = ReqState.Request.Method & " " & ReqState.Request.RequestUri.PathAndQuery & " HTTP/1.1" & vbCrLf
                sRequest = sRequest & Replace(ReqState.Request.Headers.ToString, vbCrLf & vbCrLf, "") & vbCrLf
                If InStr(LCase(sRequest), vbCrLf & "connection: ") = 0 Then
                    If ReqState.Request.Connection <> "" Then
                        sRequest = sRequest & "Connection: " & ReqState.Request.Connection & ",Close" & vbCrLf
                    Else
                        If ReqState.Request.KeepAlive Then
                            sRequest = sRequest & "Connection: Keep-Alive" & vbCrLf
                        Else
                            sRequest = sRequest & "Connection: Close" & vbCrLf
                        End If
                    End If
                End If
                sRequest = sRequest & "Host: " & ReqState.Request.RequestUri.Host
                Return sRequest
            Else
                Return Nothing
            End If
        End Get
    End Property

    '====================================================================

    Public Sub New()
        ReqState = New RequestState
    End Sub

    Public Sub New(ByRef sURL As String)
        ReqState = New RequestState
        Try
            ReqState.Request = HttpWebRequest.Create(sURL)
        Catch Ex As Exception
            Call DisplayException("Unable to create the request for the selected URL!", Ex)
        End Try
    End Sub

    Protected Overrides Sub Finalize()
        If Not ReqState Is Nothing Then ReqState = Nothing
        If Not ReqThread Is Nothing Then Call ReqThread.Abort() : ReqThread = Nothing
        MyBase.Finalize()
    End Sub

    '====================================================================

    Public Function ProcessRequest(Optional ByVal sURL As String = Nothing) As Long

        ProcessRequest = 0
        bCancel = False

        '- Make Final Changes To The Request
        If ReqState.Request Is Nothing Then
            Try
                ReqState.Request = HttpWebRequest.Create(sURL)
            Catch ex As Exception
                DisplayException("An error has occurred while trying to setup a request", ex)
                Exit Function
            End Try
        End If

        '- Setup For A POST If POST Data Is Available
        If sPostData <> "" Then
            ReqState.Request.Method = "POST"
            ReqState.Request.ContentType = "application/x-www-form-urlencoded"
            ReqState.Request.ContentLength = sPostData.Length
        End If

        ReqState.Request.AllowAutoRedirect = False

        '- Add The Range Needed For Resuming
        If bResume Then
            Dim iLen As Long
            If sOutputFile <> "" Then
                iLen = FileLen(sOutputFile)
            Else
                iLen = sResumeData.Length
            End If
            ReqState.Request.AddRange(iLen)
            ReqState.lResumeStart = iLen
        End If

        '- Create/Clear The Data
        ReqState.Data = New StringBuilder("")

        '- Start The Request Thread
        ReqThread = New Thread(AddressOf RunThread)
        ReqThread.Start()
        If ReqThread.IsAlive Then ProcessRequest = 1
    End Function

    Public Sub Abort()
        bCancel = True
    End Sub

    '====================================================================

    Private Shared Sub RunThread()
        If UCase(ReqState.Request.Method) = "POST" Then
            If Not ReqState.StatusCallback Is Nothing Then ReqState.StatusCallback.Invoke(ReqEvent.SE_POSTINGDATA, 0, 0, 0)
            Dim AsyncResult As IAsyncResult = CType(ReqState.Request.BeginGetRequestStream(AddressOf RequestCallback, ReqState), IAsyncResult)
        Else
            If Not ReqState.StatusCallback Is Nothing Then ReqState.StatusCallback.Invoke(ReqEvent.SE_REQUESTINGHEADER, 0, 0, 0)
            Dim AsyncResult As IAsyncResult = CType(ReqState.Request.BeginGetResponse(AddressOf ResponseCallback, ReqState), IAsyncResult)
        End If
    End Sub

    'Private Shared Sub EmulatePostData()
    '    Try
    '        '- Build The Request From The WebRequest
    '        Dim Req As HttpWebRequest = ReqState.Request
    '        Req.ContentLength = sPostData.Length
    '        Dim sOutData As New StringBuilder("")
    '        sOutData.Append("POST " & Req.Address.PathAndQuery & " HTTP/" & Req.ProtocolVersion.Major & "." & Req.ProtocolVersion.Minor & vbCrLf)
    '        sOutData.Append("Host: " & Req.Address.Host & vbCrLf)
    '        If Not Req.Accept Is Nothing Then sOutData.Append("Accept: " & Req.Accept & vbCrLf)
    '        If Not Req.Connection Is Nothing Then sOutData.Append("Connection: " & Req.Connection & vbCrLf)
    '        If Req.ContentLength <> -1 Then sOutData.Append("Content-Length: " & Req.ContentLength & vbCrLf)
    '        If Not Req.ContentType Is Nothing Then sOutData.Append("Content-Type: " & Req.ContentType & vbCrLf)
    '        If Not Req.Referer Is Nothing Then sOutData.Append("Referer: " & Req.Referer & vbCrLf)
    '        If Not Req.UserAgent Is Nothing Then sOutData.Append("User-Agent: " & Req.UserAgent & vbCrLf)

    '        Dim i As Integer
    '        Dim sExclude As String = "|accept|connection|content-length|content-type|referer|user-agent|host|"
    '        For i = 0 To Req.Headers.Count - 1
    '            If sExclude.IndexOf("|" & Req.Headers.Keys.Item(i).ToLower & "|") = -1 Then
    '                sOutData.Append(Req.Headers.Keys.Item(i) & ": " & Req.Headers.Item(i) & vbCrLf)
    '            End If
    '        Next
    '        sExclude = Nothing

    '        sOutData.Append(vbCrLf & sPostData)

    '        '- Connect To The Host
    '        Dim Sck As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
    '        Dim IPEP As New IPEndPoint(Dns.Resolve(ReqState.Request.Address.Host).AddressList(0), ReqState.Request.Address.Port)
    '        Sck.Connect(IPEP)
    '        If Sck.Connected Then
    '            '- Send Out The Request
    '            Sck.Send(Encoding.ASCII.GetBytes(sOutData.ToString))

    '            '- Retreive The Response
    '            Dim sHeader As String
    '            Dim sBuf As String
    '            Dim iLen As Integer = Sck.Receive(ReqState.Buffer, BUFFER_SIZE, SocketFlags.None)
    '            Do While iLen > 0
    '                If sHeader = "" Then
    '                    sBuf = sBuf & Encoding.ASCII.GetString(ReqState.Buffer, 0, iLen)
    '                    i = sBuf.IndexOf(vbCrLf & vbCrLf)
    '                    If i <> -1 Then
    '                        sHeader = Left(sBuf, i)
    '                        sBuf = Mid(sBuf, i + 5)
    '                        ReqState.ByteLen = sBuf.Length

    '                        If sBuf <> "" Then
    '                            '- Write Data To File Or Save To Buffer
    '                            If Not ReqState.OutputFileStream Is Nothing Then
    '                                ReqState.OutputFileStream.Write(Encoding.ASCII.GetBytes(sBuf), 0, sBuf.Length)
    '                            Else
    '                                ReqState.Data.Append(sBuf)
    '                            End If
    '                        End If
    '                    End If
    '                Else
    '                    '- Add Length To The Amount Received
    '                    ReqState.ByteLen = ReqState.ByteLen + iLen

    '                    '- Write Data To File Or Save To Buffer
    '                    If Not ReqState.OutputFileStream Is Nothing Then
    '                        ReqState.OutputFileStream.Write(ReqState.Buffer, 0, iLen)
    '                    Else
    '                        ReqState.Data.Append(Encoding.ASCII.GetString(ReqState.Buffer, 0, iLen))
    '                    End If
    '                    sBuf = ReqState.Data.ToString
    '                End If
    '                iLen = Sck.Receive(ReqState.Buffer, BUFFER_SIZE, SocketFlags.None)
    '            Loop
    '        End If

    '    Catch ex As Exception
    '        DisplayException("The following error occurred while trying to post the requested data", ex)
    '    End Try
    'End Sub

    Private Shared Sub RequestCallback(ByVal AsyncResult As IAsyncResult)
        Dim ReqState As RequestState = CType(AsyncResult.AsyncState, RequestState)

        If bCancel Then
            ReqState.Request.Abort()
            If Not ReqState.StatusCallback Is Nothing Then ReqState.StatusCallback.Invoke(ReqEvent.SE_REQUESTABORTED, 0, 0, 0)
            ReqThread.Abort()
            Exit Sub
        End If

        Try
            Dim StreamResponse As Stream = ReqState.Request.EndGetRequestStream(AsyncResult)
            Dim ASCIIEnc As New ASCIIEncoding
            Dim bPostData As Byte() = ASCIIEnc.GetBytes(sPostData)
            StreamResponse.Write(bPostData, 0, sPostData.Length)
            StreamResponse.Close()

            If Not ReqState.StatusCallback Is Nothing Then ReqState.StatusCallback.Invoke(ReqEvent.SE_REQUESTINGHEADER, 0, 0, 0)
            AsyncResult = CType(ReqState.Request.BeginGetResponse(AddressOf ResponseCallback, ReqState), IAsyncResult)

        Catch we As WebException
            '- Make The Response Available For Analizing Afterwards
            ReqState.Response = we.Response

            '- Try And Retreive A Error Number To Pass Back Via The Status CallBack
            Dim iErrNum As Integer = 0
            Dim reqType As System.Type = we.Response.GetType()
            Select Case LCase(reqType.Name)
                Case "httpwebresponse"
                    iErrNum = CType(we.Response, HttpWebResponse).StatusCode
            End Select

            '- Notify Owner Of Failed Request
            If Not ReqState.StatusCallback Is Nothing Then ReqState.StatusCallback.Invoke(ReqEvent.SE_REQUESTFAILED, 0, 0, iErrNum)

            '- End This Thread
            ReqThread.Abort()
        End Try
    End Sub

    Private Shared Sub ResponseCallback(ByVal AsyncResult As IAsyncResult)
        Dim ReqState As RequestState = CType(AsyncResult.AsyncState, RequestState)

        If bCancel Then
            ReqState.Request.Abort()
            If Not ReqState.StatusCallback Is Nothing Then ReqState.StatusCallback.Invoke(ReqEvent.SE_REQUESTABORTED, 0, 0, 0)
            ReqThread.Abort()
            Exit Sub
        End If

        Try
            ReqState.Response = ReqState.Request.EndGetResponse(AsyncResult)
            If Not ReqState.StatusCallback Is Nothing Then ReqState.StatusCallback.Invoke(ReqEvent.SE_HEADERRECEIVED, 0, IIf(bResume, ReqState.Response.ContentLength + ReqState.lResumeStart, ReqState.Response.ContentLength), 0)

            '- Smart Redirection
            If bUseSmartRedirection Then
                Select Case ReqState.Response.StatusCode
                    Case HttpStatusCode.Found, HttpStatusCode.Moved, HttpStatusCode.MovedPermanently

                        '- Invoke The Status Callback
                        If Not ReqState.StatusCallback Is Nothing Then ReqState.StatusCallback.Invoke(ReqEvent.SE_HEADERRECEIVED, 0, ReqState.Response.ContentLength, 0)

                        '- Change URL To Absolute If Relative
                        Dim i As Integer
                        Dim sNewUrl As String = ReqState.Response.Headers.Item("Location")
                        If Not IsValidUrl(sNewUrl) Then
                            sNewUrl = ReqState.Response.ResponseUri.Scheme & ReqState.Response.ResponseUri.SchemeDelimiter & ReqState.Response.ResponseUri.Host
                            sNewUrl = sNewUrl & ReqState.Request.RequestUri.LocalPath
                            sNewUrl = sNewUrl & ReqState.Response.Headers.Item("Location")
                        End If

                        '- Create New Request With The New Address
                        Dim NewReq As HttpWebRequest = HttpWebRequest.Create(sNewUrl)
                        NewReq.Proxy = ReqState.Request.Proxy
                        NewReq.UserAgent = ReqState.Request.UserAgent
                        NewReq.PreAuthenticate = ReqState.Request.PreAuthenticate
                        NewReq.Credentials = ReqState.Request.Credentials
                        NewReq.Referer = ReqState.Request.RequestUri.ToString

                        '- Include Any Cookies Received
                        Dim sCookie() As String
                        sCookie = ReqState.Response.Headers.GetValues("Set-Cookie")
                        If Not sCookie Is Nothing Then
                            For i = 0 To UBound(sCookie)
                                NewReq.Headers.Add("Cookie: " & sCookie(i))
                            Next i
                        End If
                        Erase sCookie
                        ReqState.Request = NewReq

                        '- Request The New Address
                        If Not ReqState.StatusCallback Is Nothing Then ReqState.StatusCallback.Invoke(ReqEvent.SE_REQUESTINGHEADER, 0, 0, 0)
                        AsyncResult = CType(ReqState.Request.BeginGetResponse(AddressOf ResponseCallback, ReqState), IAsyncResult)
                        Exit Sub
                End Select
            End If

            '- Setup OutputFile If Needed
            If sOutputFile <> "" Then
                If bResume Then
                    ReqState.ByteLen = ReqState.lResumeStart
                    ReqState.OutputFileStream = New FileStream(sOutputFile, FileMode.Append, FileAccess.Write, FileShare.None)
                Else
                    ReqState.OutputFileStream = New FileStream(sOutputFile, FileMode.OpenOrCreate, FileAccess.Write, FileShare.None)
                End If
                ReqState.Data.Append(sOutputFile)
            Else
                ReqState.OutputFileStream = Nothing
                If bResume Then
                    ReqState.Data.Append(sResumeData)
                    ReqState.ByteLen = sResumeData.Length
                End If
            End If

            ReqState.ResponseStream = ReqState.Response.GetResponseStream()
            Dim aResult As IAsyncResult = ReqState.ResponseStream.BeginRead(ReqState.Buffer, 0, BUFFER_SIZE, AddressOf ReadCallBack, ReqState)

        Catch we As WebException
            '- Make The Response Available For Analizing Afterwards
            ReqState.Response = we.Response

            Dim iErrNum As Integer = CType(we.Response, HttpWebResponse).StatusCode

            '- Notify Owner Of Failed Request
            If Not ReqState.StatusCallback Is Nothing Then ReqState.StatusCallback.Invoke(ReqEvent.SE_REQUESTFAILED, 0, 0, iErrNum)

            '- End This Thread
            ReqThread.Abort()
        End Try
    End Sub

    Private Shared Sub ReadCallBack(ByVal AsyncResult As IAsyncResult)
        Dim ReqState As RequestState = CType(AsyncResult.AsyncState, RequestState)

        If bCancel Then
            ReqState.Request.Abort()
            If Not ReqState.ResponseStream Is Nothing Then ReqState.ResponseStream.Close()
            If Not ReqState.OutputFileStream Is Nothing Then ReqState.OutputFileStream.Close()
            If Not ReqState.StatusCallback Is Nothing Then ReqState.StatusCallback.Invoke(ReqEvent.SE_REQUESTABORTED, 0, 0, 0)
            ReqThread.Abort()
            Exit Sub
        End If

        Dim iLen As Integer = ReqState.ResponseStream.EndRead(AsyncResult)
        If iLen > 0 Then
            '- Add Length To The Amount Received
            ReqState.ByteLen = ReqState.ByteLen + iLen

            '- Write Data To File Or Save To Buffer
            If Not ReqState.OutputFileStream Is Nothing Then
                ReqState.OutputFileStream.Write(ReqState.Buffer, 0, iLen)
            Else
                ReqState.Data.Append(Encoding.ASCII.GetString(ReqState.Buffer, 0, iLen))
            End If

            '- Calculate The Percent Complete
            Dim lTotalLen As Long
            Dim iPercent As Integer
            If ReqState.Response.ContentLength > 0 Then
                If bResume Then
                    lTotalLen = ReqState.Response.ContentLength + ReqState.lResumeStart
                Else
                    lTotalLen = ReqState.Response.ContentLength
                End If
                iPercent = CInt((ReqState.ByteLen / lTotalLen) * 100)
            Else
                iPercent = 0
            End If

            '- Invoke The Status Callback
            If Not ReqState.StatusCallback Is Nothing Then ReqState.StatusCallback.Invoke(ReqEvent.SE_DOWNLOADING, ReqState.ByteLen, lTotalLen, iPercent)

            '- Continue Reading
            Dim aResult As IAsyncResult = ReqState.ResponseStream.BeginRead(ReqState.Buffer, 0, BUFFER_SIZE, AddressOf ReadCallBack, ReqState)
        Else
            '- Close Response & File Streams
            ReqState.ResponseStream.Close()
            If Not ReqState.OutputFileStream Is Nothing Then ReqState.OutputFileStream.Close()

            '- Invoke The Status Callback
            If Not ReqState.StatusCallback Is Nothing Then ReqState.StatusCallback.Invoke(ReqEvent.SE_COMPLETED, ReqState.ByteLen, ReqState.Response.ContentLength, 100)

            '- End The Thread
            ReqThread.Abort()
        End If
    End Sub

    Private Shared Sub DisplayException(ByRef sInfo As String, ByVal Ex As Exception)
        Call MsgBox(sInfo & vbCrLf & vbCrLf & "Source: " & Ex.Source & vbCrLf & Ex.Message, MsgBoxStyle.Exclamation)
    End Sub

    Private Shared Function IsValidUrl(ByRef sURL As String) As Boolean
        Return System.Text.RegularExpressions.Regex.IsMatch(sURL, "(http|https)://([\w-]+\.)+(/[\w- ./?%&=]*)?")
    End Function

    Private Function UrlEncode(ByRef URLText As String) As String
        Dim AscCode As Integer
        Dim EncText As String
        Dim bStr() As Byte = Encoding.ASCII.GetBytes(URLText)

        Dim i As Long
        For i = 0 To UBound(bStr)
            AscCode = bStr(i)

            Select Case AscCode
                Case 48 To 57, 65 To 90, 97 To 122
                    EncText = EncText & Chr(AscCode)

                Case 32
                    EncText = EncText & "+"

                Case Else
                    If AscCode < 16 Then
                        EncText = EncText & "%0" & Hex(AscCode)
                    Else
                        EncText = EncText & "%" & Hex(AscCode)
                    End If

            End Select
        Next i
        Erase bStr

        Return EncText
    End Function

    '====================================================================

    Public Function FormatMilliSec(ByRef lMS As Long) As String
        Dim i As Single
        Dim sUnit As String

        i = lMS
        sUnit = ""

        If i > 1000 Then i = i / 1000 Else If sUnit = "" Then sUnit = " ms"
        If i > 60 Then i = i / 60 Else If sUnit = "" Then sUnit = " sec"
        If i > 60 Then i = i / 60 Else If sUnit = "" Then sUnit = " min"
        If i > 60 Then i = i / 60 Else If sUnit = "" Then sUnit = " hours"

        i = System.Math.Round(i, 2)
        Return CStr(i & sUnit)
    End Function

    Public Function FormatBytes(ByRef lBytes As Long) As String
        Dim i As Single
        Dim sUnit As String

        i = lBytes
        sUnit = ""

        If i > 1024 Then i = i / 1024 Else If sUnit = "" Then sUnit = " Bytes"
        If i > 1024 Then i = i / 1024 Else If sUnit = "" Then sUnit = " KB"
        If i > 1024 Then i = i / 1024 Else If sUnit = "" Then sUnit = " MB"
        If i > 1024 Then i = i / 1024 Else If sUnit = "" Then sUnit = " GB"

        i = System.Math.Round(i, 2)
        Return CStr(i & sUnit)
    End Function

    Public Sub AddPostData(ByVal sName As String, ByVal sValue As String)
        Dim sDat As String = UrlEncode(sName) & "=" & UrlEncode(sValue)
        sPostData = sPostData & IIf(sPostData = "", sDat, "&" & sDat)
    End Sub
End Class
[/LEFT]
کدش خیلی سادست نیاز به توضیح نداره!(مشکل بود در خدمتم!)

حالا شما می تونید برید سراغ کار اصلی

شما فرض کنید می خواید به یه سایت وصل شید برای این کار باید یه درخواست به سرور بفرستید!که محتویات درخواست شما رو داره!

مثلا برای سرور ورژن برنامه فعلی و یا اسم یوزر رو می فرستید!

برای این کار شما دو تا روش دارید:

1-با Query String بفرستیدکه برای این کار می تونید در انتهای لینک سایت به صورت Query اطلاعات رو بفرستید که خوب قاعدتا محدودیت داره!

2-با Post برای این کار توی خود همون کلاس یه sub تعریف شده به نام: AddPostDate
طرز کارش به این صورته:

.addpostdata(“name”,”Value”)

شما به این طریق میتونید اطلاعات رو سند کنید!

ولی میرسیم به بخش بازیابی اطلاعات.

برای این کار در همون کلاس یه متد وجود داره به نام OutputFile
این متد یه آرگمان ورودی داره که فایل رو مشخص میکنه!

شما بعد از اینکه خروجی رو گرفتید میتونید ازش هرجوری کهدوست دارید استفاده کنید!

اینم یه نمونه کد برای این برنامه یه برنامه نمونه هم گذاشتم!


کد:
[LEFT]
Public Sub ReqCallBack(ByVal StatusEvent As ReqEvent, ByVal lBytesComplete As Long, ByVal lBytesTotal As Long, ByVal iPercent As Integer)
        Select Case StatusEvent
            Case ReqEvent.SE_REQUESTINGHEADER
                lblStatusText.Text = "Requesting..."
            Case ReqEvent.SE_POSTINGDATA
                lblStatusText.Text = "Posting Data..."
            Case ReqEvent.SE_DOWNLOADING
                lblStatusText.Text = "Downloading..."
            Case ReqEvent.SE_COMPLETED
                lblStatusText.Text = "Finished"
                MsgBox("Sending was success full!" & vbCrLf & "See the text file that created in bin Folder that name is Login.txt")
                PictureBox1.Visible = False
                wr = Nothing
            Case ReqEvent.SE_REQUESTFAILED
                lblStatusText.Text = "Request Failed! (" & iPercent & ")"
                wr = Nothing
            Case ReqEvent.SE_REQUESTABORTED
                lblStatusText.Text = "Download Canceled!"
                wr = Nothing
        End Select
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        PictureBox1.Visible = True
        Dim txtrequest As String = "http://live-code.ir/majidtt.asp?username=" & TextBox1.Text & "&password=" & TextBox2.Text
        wr = New clsWebRequest(txtrequest)
        If Not wr.RequestObj Is Nothing Then
            '- Set The Status Callback Address
            wr.StatusCallBack = AddressOf ReqCallBack
            '- Use Smart Auto Redirection (Cookie Support)
            wr.UseSmartRedirection = True
            '- Enable/Disable File Saving
            wr.OutputFile = "LOGIN.txt"
            '- Make The Request
            wr.ProcessRequest()
        End If
    End Sub
[/LEFT]

برای عزیزانی که برنامه VS.Net رو ندارند کامپایل شده رو گذاشتم!:D

امید وارم مورد استفاده واقع بشه!:oops:

.:مسعود:.

www.elol.ir Team Programer
 

پیوست ها

  • WindowsApplication2.rar
    459.9 کیلوبایت · بازدیدها: 64

MDP

Well-Known Member
ببخشید یادم رفت بگم برای تست برنامه یه username و Password مثل هم بدید
 

جدیدترین ارسال ها

بالا