Este artigo descreve um método de módulo do visual basic6.0, que usa XMLHTTP para implementar as funções Post e Get. Embora seja um código antigo, ele pode substituir o controle Inet para obter comunicação de dados. Vale a pena aprender.
O código do módulo principal é o seguinte:
'================================================ ========='| Nome do módulo | XMLHTTP'| Substitua o controle Inet para obter comunicação de dados'==================== === ================================== Enum Público DataEnum ResponseText = 1 ResponseBody = 2End Enum Função Pública GetData(ByVal Url como String, ByVal DataStic As DataEnum) Como variante em caso de erro 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 '-------------------------------------- ------- Função retornaSelect Case DataStic Case ResponseText '-------------------------------- Retorna diretamente a string DataS = XMLHTTP.ResponseText GetData = DataS Case ResponseBody '-- ------------------------------- Retornar diretamente o binário DataB = XMLHTTP.ResponseBody GetData = DataB Case ResponseBody + ResponseText '--- - -------------------------- Conversão de binário para string [tente quando a string retornada diretamente estiver distorcida] DataS = BytesToStr(XMLHTTP.ResponseBody) GetData = DataS Case Else '--------------------------------Retorno inválido GetData = "" End Select '------------------------------------------------------ Liberar espaço Definir XMLHTTP = Nada Sair FunctionERR: GetData = "" Função final Função pública PostData (ByVal StrUrl As String, ByVal StrData As String, ByVal DataStic As DataEnum) Como variante em caso de erro GoTo ERR: Dim XMLHTTP As Object Dim DataS As String Dim DataB() As Conjunto de bytes 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) Faça Até XMLHTTP.ReadyState = 4 DoEvents Loop '--------------------------------Função retorna Select Case DataStic Case ResponseText '----------------------------- Retorna diretamente a string DataS = XMLHTTP.ResponseText PostData = DataS Case ResponseBody '-- --- ---------------------------- Retorna diretamente o binário DataB = XMLHTTP.ResponseBody PostData = DataB Case ResponseBody + ResponseText '---- -- --------------------- Conversão de binário para string [tente quando a string retornada diretamente estiver ilegível] DataS = BytesToStr(XMLHTTP.ResponseBody) PostData = DataS Case Else '- ------------------------------- PostData de retorno inválido = "" End Select '--------------------------------------------------Liberar espaço Set XMLHTTP = Nothing Exit FunctionERR : PostData = "" Função Final Função 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 = strReturnEnd Função