В этой статье описывается модульный метод Visual Basic6.0, который использует XMLHTTP для реализации функций Post и Get. Хотя это старый код, он может заменить элемент управления Inet для обеспечения передачи данных. Этому стоит поучиться.
Основной код модуля выглядит следующим образом:
'============================================== = ========='| Имя модуля | XMLHTTP'| Замените элемент управления Inet для обеспечения передачи данных'================== === ==================================Public Enum DataEnum ResponseText = 1 ResponseBody = 2End Enum Public Function GetData(ByVal URL As String, ByVal DataStic As DataEnum) Как вариант при ошибке GoTo ERR: Dim XMLHTTP как объект Dim DataS как строка Dim DataB() как байт Set XMLHTTP = CreateObject("Microsoft.XMLHTTP") XMLHTTP.Open "get", Url, True XMLHTTP .send While XMLHTTP.ReadyState <> 4 DoEvents Wend '-------------------------------------- ------- Функция возвращаетВыбрать вариант 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 '----------------------------------------Освободить пространство Установить XMLHTTP = Ничего Выход FunctionERR: GetData = "" Конечная функция Открытая функция PostData(ByVal StrUrl As String, ByVal StrData As String, ByVal DataStic As DataEnum) Как вариант при ошибке GoTo ERR: Dim XMLHTTP As Object Dim DataS As String Dim DataB() As Набор байтов 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 Пока XMLHTTP.ReadyState = 4 Цикл DoEvents '--------------------------------Функция возвращает 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 = "" Конец выбора '------------------------------------Освободить пространство Установить XMLHTTP = Ничего Выход из функцииERR : PostData = "" Конечная функция функции BytesToStr(ByVal vIn) As String strReturn = "" For i = 1 To LenB(vIn) ThisCharCode = AscB(MidB(vIn, i, 1)) Если ThisCharCode < &H80 Тогда strReturn = strReturn & Chr(ThisCharCode) Иначе СледующийCharCode = AscB(MidB(vIn, i + 1, 1)) strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) i = i + 1 End If Next BytesToStr = функция strReturnEnd