Frage

Gibt es eine Möglichkeit, eine HTTP -GET -Anforderung innerhalb eines visuellen Basisskripts durchzuführen? Ich muss den Inhalt der Antwort von einer bestimmten URL zur Verarbeitung erhalten.

War es hilfreich?

Lösung

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.

Andere Tipps

Sie haben zum Zeitpunkt des Schreibens nicht beschrieben, was Sie mit der Antwort machen werden oder wie der Inhaltstyp ist. Eine Antwort enthält bereits eine sehr grundlegende Verwendung von MSXML2.XMLHTTP (Ich empfehle die expliziteren MSXML2.XMLHTTP.3.0 progid) Wie auch immer Sie mit der Antwort unterschiedliche Dinge tun müssen, es ist möglicherweise kein Text.

Das XMLHTTP hat auch a responseBody Eigenschaft, die eine Byte -Array -Version der Antwort ist, und es gibt a responseStream Welches ist ein IStream Wrapper für die Antwort.

Beachten Sie, dass Sie in einer serverseitigen Anforderung (z. B. VBScript in ASP) verwenden würden MSXML.ServerXMLHTTP.3.0 oder WinHttp.WinHttpRequest.5.1 (die eine nahezu identische Schnittstelle hat).

Hier ist ein Beispiel für die Verwendung von XMLHTTP, um eine PDF-Datei zu holen und zu speichern:-

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

Wenn Sie die GET -Anfrage verwenden, um tatsächlich Daten zu senden ...

überprüfen:http://techhelplist.com/index.php/tech-tutorials/37-windows-troulbles/60-vbscript-sending-get-request

Das Problem mit msxml2.xmlhttp besteht darin, dass es mehrere Versionen davon gibt, mit unterschiedlichen Namen abhängig von der Windows -Betriebssystemversion und Patches.

Dies erklärt es:http://support.microsoft.com/kb/269238

Ich hatte mehr Glück mit VBScript, um sie anzurufen

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

.... und mehr Zeug, aber nur um die Anfrage durchlaufen zu lassen.

        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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top