前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VB使用XMLHTTP实现Post与Get的方法分享

VB使用XMLHTTP实现Post与Get的方法分享

原创
作者头像
大师级码师
发布2022-11-06 19:28:55
1.2K0
发布2022-11-06 19:28:55
举报
文章被收录于专栏:大师级码师大师级码师

主要模块代码如下:

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

'| 模 块 名 | XMLHTTP

'| 说 明 | 替代Inet控件,实现数据通讯

'==========================================================Public Enum DataEnum

ResponseText = 1

ResponseBody = 2

End Enum

Public Function GetData(ByVal Url As String, ByVal DataStic As DataEnum) As Variant

On Error GoTo ERR:

Dim XMLHTTP As Object

Dim DataS As String

Dim DataB() As Byte

Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")

XMLHTTP.Open "get", Url, True

XMLHTTP.send

While XMLHTTP.ReadyState <> 4

DoEvents

Wend

'--------------------------------------函数返回

Select Case DataStic

Case ResponseText

'--------------------------------直接返回字符串

DataS = XMLHTTP.ResponseText

GetData = DataS

Case ResponseBody

'--------------------------------直接返回二进制

DataB = XMLHTTP.ResponseBody

GetData = DataB

Case ResponseBody + ResponseText

'------------------------------二进制转字符串[直接返回字串出现乱码时尝试]

DataS = BytesToStr(XMLHTTP.ResponseBody)

GetData = DataS

Case Else

'--------------------------------无效的返回

GetData = ""

End Select

'--------------------------------------释放空间

Set XMLHTTP = Nothing

Exit Function

ERR:

GetData = ""

End Function

Public Function PostData(ByVal StrUrl As String, ByVal StrData As String, ByVal DataStic As DataEnum) As Variant

On Error GoTo ERR:

Dim XMLHTTP As Object

Dim DataS As String

Dim DataB() As Byte

Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")

XMLHTTP.Open "POST", StrUrl, True

XMLHTTP.setRequestHeader "Content-Length", Len(PostData)

XMLHTTP.setRequestHeader "CONTENT-TYPE", "application/x-www-form-urlencoded"

XMLHTTP.send (StrData)

Do Until XMLHTTP.ReadyState = 4

DoEvents

Loop

'-----------------------------函数返回

Select Case DataStic

Case ResponseText

'--------------------------------直接返回字符串

DataS = XMLHTTP.ResponseText

PostData = DataS

Case ResponseBody

'--------------------------------直接返回二进制

DataB = XMLHTTP.ResponseBody

PostData = DataB

Case ResponseBody + ResponseText

'---------------------------二进制转字符串[直接返回字串出现乱码时尝试]

DataS = BytesToStr(XMLHTTP.ResponseBody)

PostData = DataS

Case Else

'--------------------------------无效的返回

PostData = ""

End Select

'------------------------------------释放空间

Set XMLHTTP = Nothing

Exit Function

ERR:

PostData = ""

End Function

Function BytesToStr(ByVal vIn) As String

strReturn = ""

For i = 1 To LenB(vIn)

ThisCharCode = AscB(MidB(vIn, i, 1))

If ThisCharCode < &H80 Then

strReturn = strReturn & Chr(ThisCharCode)

Else

NextCharCode = AscB(MidB(vIn, i + 1, 1))

strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))

i = i + 1

End If

Next

BytesToStr = strReturn

End Function

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档