Pregunta

¿Hay alguna forma de realizar una solicitud HTTP GET dentro de un script de Visual Basic? Necesito obtener el contenido de la respuesta de una URL particular para su procesamiento.

¿Fue útil?

Solución

Dim o
Set o = CreateObject("MSXML2.XMLHTTP")
o.open "GET", "http://www.example.com", False
o.send
' o.responseText now holds the response as a string.

Otros consejos

Al momento de escribir esto, no has descrito qué vas a hacer con la respuesta o cuál es su tipo de contenido. Una respuesta ya contiene un uso muy básico de MSXML2.XMLHTTP (recomiendo el MSXML2.XMLHTTP.3.0 más explícito) sin embargo, es posible que necesite hacer diferentes cosas con la respuesta , puede que no sea texto.

El XMLHTTP también tiene una propiedad responseBody que es una versión de la matriz de bytes de la respuesta y hay un responseStream que es un contenedor IStream por la respuesta.

Tenga en cuenta que en un requisito del lado del servidor (por ejemplo, VBScript alojado en ASP) usaría MSXML.ServerXMLHTTP.3.0 o WinHttp.WinHttpRequest.5.1 (que tiene una interfaz casi idéntica).

Este es un ejemplo del uso de XmlHttp para buscar un archivo PDF y almacenarlo: -

Dim oXMLHTTP
Dim oStream

Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.3.0")

oXMLHTTP.Open "GET", "http://someserver/folder/file.pdf", False
oXMLHTTP.Send

If oXMLHTTP.Status = 200 Then
    Set oStream = CreateObject("ADODB.Stream")
    oStream.Open
    oStream.Type = 1
    oStream.Write oXMLHTTP.responseBody
    oStream.SaveToFile "c:\somefolder\file.pdf"
    oStream.Close
End If

Si está utilizando la solicitud GET para ENVIAR datos en realidad ...

comprobar: http://techhelplist.com /index.php/tech-tutorials/37-windows-troubles/60-vbscript-sending-get-request

El problema con MSXML2.XMLHTTP es que existen varias versiones, con diferentes nombres dependiendo de la versión y los parches de Windows OS.

esto lo explica: http://support.microsoft.com/kb/269238

He tenido más suerte al usar vbscript para llamar

set ID = CreateObject("InternetExplorer.Application")
IE.visible = 0
IE.navigate "http://example.com/parser.php?key=" & value & "key2=" & value2 
do while IE.Busy.... 

.... y más cosas, pero solo para dejar que la solicitud siga adelante.

        strRequest = "<soap:Envelope xmlns:soap=""http://www.w3.org/2003/05/soap-envelope"" " &_
         "xmlns:tem=""http://tempuri.org/"">" &_
         "<soap:Header/>" &_
         "<soap:Body>" &_
            "<tem:Authorization>" &_
                "<tem:strCC>"&1234123412341234&"</tem:strCC>" &_
                "<tem:strEXPMNTH>"&11&"</tem:strEXPMNTH>" &_
                "<tem:CVV2>"&123&"</tem:CVV2>" &_
                "<tem:strYR>"&23&"</tem:strYR>" &_
                "<tem:dblAmount>"&1235&"</tem:dblAmount>" &_
            "</tem:Authorization>" &_
        "</soap:Body>" &_
        "</soap:Envelope>"

        EndPointLink = "http://www.trainingrite.net/trainingrite_epaysystem" &_
                "/trainingrite_epaysystem/tr_epaysys.asmx"



dim http
set http=createObject("Microsoft.XMLHTTP")
http.open "POST",EndPointLink,false
http.setRequestHeader "Content-Type","text/xml"

msgbox "REQUEST : " & strRequest
http.send strRequest

If http.Status = 200 Then
'msgbox "RESPONSE : " & http.responseXML.xml
msgbox "RESPONSE : " & http.responseText
responseText=http.responseText
else
msgbox "ERRCODE : " & http.status
End If

Call ParseTag(responseText,"AuthorizationResult")

Call CreateXMLEvidence(responseText,strRequest)

'Function to fetch the required message from a TAG
Function ParseTag(ResponseXML,SearchTag)

 ResponseMessage=split(split(split(ResponseXML,SearchTag)(1),"</")(0),">")(1)
 Msgbox ResponseMessage

End Function

'Function to create XML test evidence files
Function CreateXMLEvidence(ResponseXML,strRequest)

 Set fso=createobject("Scripting.FileSystemObject")
 Set qfile=fso.CreateTextFile("C:\Users\RajkumarJoshua\Desktop\DCIM\SampleResponse.xml",2)
 Set qfile1=fso.CreateTextFile("C:\Users\RajkumarJoshua\Desktop\DCIM\SampleReuest.xml",2)

 qfile.write ResponseXML
 qfile.close

 qfile1.write strRequest
 qfile1.close

End Function
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top