VB使用XMLHTTP实现Post与Get的方法
本文所述为visualbasic6.0的一个模块方法,是使用XMLHTTP实现Post与Get功能,虽然是一个老代码,但是可以替代Inet控件,实现数据通讯。很值得学习借鉴一下。
主要模块代码如下:
'==========================================================
'|模块名|XMLHTTP
'|说明|替代Inet控件,实现数据通讯
'==========================================================PublicEnumDataEnum
ResponseText=1
ResponseBody=2
EndEnum
PublicFunctionGetData(ByValUrlAsString,ByValDataSticAsDataEnum)AsVariant
OnErrorGoToERR:
DimXMLHTTPAsObject
DimDataSAsString
DimDataB()AsByte
SetXMLHTTP=CreateObject("Microsoft.XMLHTTP")
XMLHTTP.Open"get",Url,True
XMLHTTP.send
WhileXMLHTTP.ReadyState<>4
DoEvents
Wend
'--------------------------------------函数返回
SelectCaseDataStic
CaseResponseText
'--------------------------------直接返回字符串
DataS=XMLHTTP.ResponseText
GetData=DataS
CaseResponseBody
'--------------------------------直接返回二进制
DataB=XMLHTTP.ResponseBody
GetData=DataB
CaseResponseBody+ResponseText
'------------------------------二进制转字符串[直接返回字串出现乱码时尝试]
DataS=BytesToStr(XMLHTTP.ResponseBody)
GetData=DataS
CaseElse
'--------------------------------无效的返回
GetData=""
EndSelect
'--------------------------------------释放空间
SetXMLHTTP=Nothing
ExitFunction
ERR:
GetData=""
EndFunction
PublicFunctionPostData(ByValStrUrlAsString,ByValStrDataAsString,ByValDataSticAsDataEnum)AsVariant
OnErrorGoToERR:
DimXMLHTTPAsObject
DimDataSAsString
DimDataB()AsByte
SetXMLHTTP=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)
DoUntilXMLHTTP.ReadyState=4
DoEvents
Loop
'-----------------------------函数返回
SelectCaseDataStic
CaseResponseText
'--------------------------------直接返回字符串
DataS=XMLHTTP.ResponseText
PostData=DataS
CaseResponseBody
'--------------------------------直接返回二进制
DataB=XMLHTTP.ResponseBody
PostData=DataB
CaseResponseBody+ResponseText
'---------------------------二进制转字符串[直接返回字串出现乱码时尝试]
DataS=BytesToStr(XMLHTTP.ResponseBody)
PostData=DataS
CaseElse
'--------------------------------无效的返回
PostData=""
EndSelect
'------------------------------------释放空间
SetXMLHTTP=Nothing
ExitFunction
ERR:
PostData=""
EndFunction
FunctionBytesToStr(ByValvIn)AsString
strReturn=""
Fori=1ToLenB(vIn)
ThisCharCode=AscB(MidB(vIn,i,1))
IfThisCharCode<&H80Then
strReturn=strReturn&Chr(ThisCharCode)
Else
NextCharCode=AscB(MidB(vIn,i+1,1))
strReturn=strReturn&Chr(CLng(ThisCharCode)*&H100+CInt(NextCharCode))
i=i+1
EndIf
Next
BytesToStr=strReturn
EndFunction