在好例子网,分享、交流、成长!
您当前所在位置:首页ASP 开发实例VB编程 → VB Winsock HTTP POST GET表单提交

VB Winsock HTTP POST GET表单提交

VB编程

下载此实例
  • 开发语言:ASP
  • 实例大小:4.93KB
  • 下载次数:53
  • 浏览次数:970
  • 发布时间:2019-10-04
  • 实例类别:VB编程
  • 发 布 人:sgda223
  • 文件格式:.rar
  • 所需积分:4
 相关标签: Winsock POST http GET POS

实例介绍

【实例简介】

【实例截图】

from clipboard

【核心代码】

Option Explicit
'Download by http://www.NewXing.com
' we set this to true whil a connection is established
Private blnConnected As Boolean

' this function sends the HTTP request
Private Sub cmdSend_Click()
    Dim eUrl As URL
    
    Dim strMethod As String
    Dim strData As String
    Dim strPostData As String
    Dim strHeaders As String
    
    Dim strHTTP As String
    Dim X As Integer
    
    strPostData = ""
    strHeaders = ""
    strMethod = cboRequestMethod.List(cboRequestMethod.ListIndex)
    
    If blnConnected Then Exit Sub
    
    ' get the url
    eUrl = ExtractUrl(txtUrl.Text)
    
    If eUrl.Host = vbNullString Then
        MsgBox "Invalid Host", vbCritical, "ERROR"
    
        Exit Sub
    End If
    
    ' configure winsock
    winsock.Protocol = sckTCPProtocol
    winsock.RemoteHost = eUrl.Host
    
    If eUrl.Scheme = "http" Then
        If eUrl.Port > 0 Then
            winsock.RemotePort = eUrl.Port
        Else
            winsock.RemotePort = 80
        End If
    ElseIf eUrl.Scheme = vbNullString Then
        winsock.RemotePort = 80
    Else
        MsgBox "Invalid protocol schema"
    End If
    
    ' build encoded data the data is url encoded in the form
    ' var1=value&var2=value
    strData = ""
    For X = 0 To txtVariableName.Count - 1
        If txtVariableName(X).Text <> vbNullString Then
        
            strData = strData & URLEncode(txtVariableName(X).Text) & "=" & _
                            URLEncode(txtVariableValue(X).Text) & "&"
        End If
    Next X
    
    If eUrl.Query <> vbNullString Then
        eUrl.URI = eUrl.URI & "?" & eUrl.Query
    End If
    
    ' check if any variables were supplied
    If strData <> vbNullString Then
        strData = Left(strData, Len(strData) - 1)
        
        
        If strMethod = "GET" Then
            ' if this is a GET request then the URL encoded data
            ' is appended to the URI with a ?
            If eUrl.Query <> vbNullString Then
                eUrl.URI = eUrl.URI & "&" & strData
            Else
                eUrl.URI = eUrl.URI & "?" & strData
            End If
        Else
            ' if it is a post request, the data is appended to the
            ' body of the HTTP request and the headers Content-Type
            ' and Content-Length added
            strPostData = strData
            strHeaders = "Content-Type: application/x-www-form-urlencoded" & vbCrLf & _
                         "Content-Length: " & Len(strPostData) & vbCrLf
                         
        End If
    End If
            
    ' get any aditional headers and add them
    For X = 0 To txtHeaderName.Count - 1
        If txtHeaderName(X).Text <> vbNullString Then
        
            strHeaders = strHeaders & txtHeaderName(X).Text & ": " & _
                            txtHeaderValue(X).Text & vbCrLf
        End If
    Next X
    
    ' clear the old HTTP response
    txtResponse.Text = ""
    
    ' build the HTTP request in the form
    '
    ' {REQ METHOD} URI HTTP/1.0
    ' Host: {host}
    ' {headers}
    '
    ' {post data}
    strHTTP = strMethod & " " & eUrl.URI & " HTTP/1.0" & vbCrLf
    strHTTP = strHTTP & "Host: " & eUrl.Host & vbCrLf
    strHTTP = strHTTP & strHeaders
    strHTTP = strHTTP & vbCrLf
    strHTTP = strHTTP & strPostData

    txtRequest.Text = strHTTP
    
    winsock.Connect
    
    ' wait for a connection
    While Not blnConnected
        DoEvents
    Wend
    
    ' send the HTTP request
    winsock.SendData strHTTP
End Sub


Private Sub winsock_Connect()
    blnConnected = True
End Sub

' this event occurs when data is arriving via winsock
Private Sub winsock_DataArrival(ByVal bytesTotal As Long)
    Dim strResponse As String

    winsock.GetData strResponse, vbString, bytesTotal
    
    strResponse = FormatLineEndings(strResponse)
    
    ' we append this to the response box becuase data arrives
    ' in multiple packets
    txtResponse.Text = txtResponse.Text & strResponse
    
End Sub

Private Sub winsock_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
    MsgBox Description, vbExclamation, "ERROR"
    
    winsock.Close
End Sub

Private Sub winsock_Close()
    blnConnected = False
    
    winsock.Close
End Sub

' this function converts all line endings to Windows CrLf line endings
Private Function FormatLineEndings(ByVal str As String) As String
    Dim prevChar As String
    Dim nextChar As String
    Dim curChar As String
    
    Dim strRet As String
    
    Dim X As Long
    
    prevChar = ""
    nextChar = ""
    curChar = ""
    strRet = ""
    
    For X = 1 To Len(str)
        prevChar = curChar
        curChar = Mid$(str, X, 1)
                
        If nextChar <> vbNullString And curChar <> nextChar Then
            curChar = curChar & nextChar
            nextChar = ""
        ElseIf curChar = vbLf Then
            If prevChar <> vbCr Then
                curChar = vbCrLf
            End If
            
            nextChar = ""
        ElseIf curChar = vbCr Then
            nextChar = vbLf
        End If
        
        strRet = strRet & curChar
    Next X
    
    FormatLineEndings = strRet
End Function

Private Sub Form_Load()
    cboRequestMethod.ListIndex = 0
    blnConnected = False
End Sub

' the code below has nothing to do with winsock or HTTP and deals only with the
' display and manipulation of controls
Private Sub cmdMoreHeaders_Click()
    Dim intNext As Integer
    Dim lngTop As Long
    
    ' find the next control
    intNext = txtHeaderName.Count
    
    ' find the next top
    lngTop = txtHeaderName(intNext - 1).Top   txtHeaderName(intNext - 1).Height   80
    
    ' add new controls
    Load lblHeaderName(intNext)
    Load txtHeaderName(intNext)
    Load lblHeaderValue(intNext)
    Load txtHeaderValue(intNext)
    
                                  
    With lblHeaderName(intNext)
        .Top = lngTop
        .Left = lblHeaderName(intNext - 1).Left
        .Visible = True
    End With
    
    With txtHeaderName(intNext)
        .Top = lngTop
        .Left = txtHeaderName(intNext - 1).Left
        .Visible = True
        .Text = ""
    End With
        
    With lblHeaderValue(intNext)
        .Top = lngTop
        .Left = lblHeaderValue(intNext - 1).Left
        .Visible = True
    End With
    
    With txtHeaderValue(intNext)
        .Top = lngTop
        .Left = txtHeaderValue(intNext - 1).Left
        .Visible = True
        .Text = ""
    End With
    
    ' set the new height of the controls container
    pbxHeaders.Height = txtHeaderName(intNext).Top   txtHeaderName(intNext).Height   80
    
    ' check if we should activate the scroll bar, ie: the outerbox
    ' is higher than the inner box
    If pbxHeaders.Height > pbxOHeaders.Height Then
        With vsbHeaders
            .Enabled = True
            .SmallChange = txtHeaderName(intNext).Height
            .LargeChange = pbxOHeaders.Height
            .Min = 0
            .Max = pbxHeaders.Height - pbxOHeaders.Height
            .Value = .Max
        End With
    End If
End Sub

Private Sub cmdMoreVariables_Click()
    Dim intNext As Integer
    Dim lngTop As Long
    
    ' find the next control
    intNext = txtVariableName.Count
    
    ' find the next top
    lngTop = txtVariableName(intNext - 1).Top   txtVariableName(intNext - 1).Height   80
    
    ' add new controls
    Load lblVariableName(intNext)
    Load txtVariableName(intNext)
    Load lblVariableValue(intNext)
    Load txtVariableValue(intNext)
    
                                  
    With lblVariableName(intNext)
        .Top = lngTop
        .Left = lblVariableName(intNext - 1).Left
        .Visible = True
    End With
    
    With txtVariableName(intNext)
        .Top = lngTop
        .Left = txtVariableName(intNext - 1).Left
        .Visible = True
        .TabIndex = txtVariableName(intNext - 1).TabIndex   2
        .Text = ""
    End With
        
    With lblVariableValue(intNext)
        .Top = lngTop
        .Left = lblVariableValue(intNext - 1).Left
        .Visible = True
    End With
    
    With txtVariableValue(intNext)
        .Top = lngTop
        .Left = txtVariableValue(intNext - 1).Left
        .TabIndex = txtVariableValue(intNext - 1).TabIndex   2
        .Visible = True
        .Text = ""
    End With
    
    ' set the new height of the controls container
    pbxVariables.Height = txtVariableName(intNext).Top   txtVariableName(intNext).Height   80
    
    ' check if we should activate the scroll bar, ie: the outerbox
    ' is higher than the inner box
    If pbxVariables.Height > pbxOVariables.Height Then
        With vsbVariables
            .Enabled = True
            .SmallChange = txtVariableName(intNext).Height
            .LargeChange = pbxOVariables.Height
            .Min = 0
            .Max = pbxVariables.Height - pbxOVariables.Height
            .Value = .Max
        End With
    End If
End Sub

Private Sub vsbHeaders_Change()
    pbxHeaders.Top = 0 - vsbHeaders.Value
End Sub

Private Sub vsbHeaders_Scroll()
    pbxHeaders.Top = 0 - vsbHeaders.Value
End Sub

Private Sub vsbVariables_Change()
    pbxVariables.Top = 0 - vsbVariables.Value
End Sub

Private Sub vsbVariables_Scroll()
    pbxVariables.Top = 0 - vsbVariables.Value
End Sub

标签: Winsock POST http GET POS

实例下载地址

VB Winsock HTTP POST GET表单提交

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警