我这家伙答案是你 發表於 2014-7-31 10:55:46

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

<p>本文所述为visual basic6.0的一个模块方法,是使用XMLHTTP实现Post与Get功能,虽然是一个老代码,但是可以替代Inet控件,实现数据通讯。很值得学习借鉴一下。</p>
<p>主要模块代码如下:</p>
<div class="jb51code">
<pre class="brush:vb;">
'==========================================================
'| 模 块 名 | 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 &lt;&gt; 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 &lt; &amp;H80 Then
      strReturn = strReturn &amp; Chr(ThisCharCode)
    Else
      NextCharCode = AscB(MidB(vIn, i + 1, 1))
      strReturn = strReturn &amp; Chr(CLng(ThisCharCode) * &amp;H100 + CInt(NextCharCode))
      i = i + 1
    End If
Next
BytesToStr = strReturn
End Function</pre>
</div>
                           
                            <div class="art_xg">
                              <b>您可能感兴趣的文章:</b><ul><li>VB6实现连接Access数据库的ADODB代码实现方法</li><li>VB的TextBox文本框实现垂直居中显示的方法</li><li>VB的32位程序在64位系统中出现文件和注册表自动转向的解决方法</li><li>VB实现鼠标绘图实例代码</li><li>VB实现屏蔽文本框右键菜单的复制、粘贴等功能的方法</li><li>VB读取线程、句柄及写入内存的API代码实例</li><li>VB实现的倒计时类代码详解</li><li>VB调用Word拼写检查功能实例</li><li>VB使用shell函数打开外部exe程序的实现方法</li></ul>
                            </div>

                        </div>
                        <!--endmain-->
頁: [1]
查看完整版本: VB使用XMLHTTP实现Post与Get的方法