Vraag HTTP GET in VBS


Is er een manier om een ​​HTTP GET-aanvraag uit te voeren binnen een Visual Basic-script? Ik moet de inhoud van de reactie van een bepaalde URL voor verwerking ontvangen.


35
2017-10-15 13:47


oorsprong


antwoorden:


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.

60
2017-10-15 14:10



Je hebt op het moment van schrijven niet beschreven wat je gaat doen met de reactie of wat het inhoudstype is. Een antwoord bevat al een heel basaal gebruik van MSXML2.XMLHTTP (Ik raad het meer expliciet aan MSXML2.XMLHTTP.3.0 progID) maar misschien moet je andere dingen doen met het antwoord, het is misschien geen tekst.

De XMLHTTP heeft ook een responseBody eigenschap die een byte array-versie van de respons is en er is een responseStream wat een is IStream wrapper voor het antwoord.

Merk op dat u bij een server-side vereiste (bijv. VBScript gehost in ASP) zou gebruiken MSXML.ServerXMLHTTP.3.0 of WinHttp.WinHttpRequest.5.1 (die een bijna identieke interface heeft).

Hier is een voorbeeld van het gebruik van XmlHttp om een ​​PDF-bestand op te halen en op te slaan: -

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

37
2017-10-16 15:00



Als u het GET-verzoek gebruikt om daadwerkelijk gegevens te verzenden ...

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

Het probleem met MSXML2.XMLHTTP is dat er verschillende versies van zijn, met verschillende namen, afhankelijk van de Windows OS-versie en patches.

dit verklaart het: http://support.microsoft.com/kb/269238

ik heb meer geluk gehad met het gebruik van vbscript om te bellen

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

.... en meer dingen, maar gewoon om het verzoek door te laten gaan.


3
2018-02-18 04:12



        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

-1
2018-06-14 13:08