本文所述為visual basic6.0的一個(gè)模塊方法,是使用XMLHTTP實(shí)現(xiàn)Post與Get功能,雖然是一個(gè)老代碼,但是可以替代Inet控件,實(shí)現(xiàn)數(shù)據(jù)通訊。很值得學(xué)習(xí)借鑒一下。
主要模塊代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
'========================================================== '| 模 塊 名 | XMLHTTP '| 說 明 | 替代Inet控件,實(shí)現(xiàn)數(shù)據(jù)通訊 '==========================================================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 '--------------------------------------函數(shù)返回 Select Case DataStic Case ResponseText '--------------------------------直接返回字符串 DataS = XMLHTTP.ResponseText GetData = DataS Case ResponseBody '--------------------------------直接返回二進(jìn)制 DataB = XMLHTTP.ResponseBody GetData = DataB Case ResponseBody + ResponseText '------------------------------二進(jìn)制轉(zhuǎn)字符串[直接返回字串出現(xiàn)亂碼時(shí)嘗試] 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 '-----------------------------函數(shù)返回 Select Case DataStic Case ResponseText '--------------------------------直接返回字符串 DataS = XMLHTTP.ResponseText PostData = DataS Case ResponseBody '--------------------------------直接返回二進(jìn)制 DataB = XMLHTTP.ResponseBody PostData = DataB Case ResponseBody + ResponseText '---------------------------二進(jìn)制轉(zhuǎn)字符串[直接返回字串出現(xiàn)亂碼時(shí)嘗試] 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 |