Вопрос

Есть ли способ выполнить HTTP GET-запрос в скрипте Visual Basic?Мне нужно получить содержимое ответа с определенного URL-адреса для обработки.

Это было полезно?

Решение

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.

Другие советы

На момент написания статьи вы не описали, что вы собираетесь делать с ответом или каков его тип содержимого.Ответ уже содержит очень простое использование MSXML2.XMLHTTP (Я рекомендую более явный MSXML2.XMLHTTP.3.0 ProgID) однако вам может потребоваться выполнить разные действия с ответом, это может быть не текст.

XMLHTTP также имеет responseBody свойство, представляющее собой версию ответа в виде байтового массива и имеющее responseStream который является IStream оболочка для ответа.

Обратите внимание, что в требовании на стороне сервера (например, VBScript, размещенный в ASP) вы бы использовали MSXML.ServerXMLHTTP.3.0 или WinHttp.WinHttpRequest.5.1 (который имеет почти идентичный интерфейс).

Вот пример использования XmlHttp для извлечения PDF-файла и его сохранения:-

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

Если вы используете запрос GET для фактической ОТПРАВКИ данных...

проверить:http://techhelplist.com/index.php/tech-tutorials/37-windows-troubles/60-vbscript-sending-get-request

Проблема с MSXML2.XMLHTTP заключается в том, что существует несколько его версий с разными названиями в зависимости от версии ОС Windows и исправлений.

это все объясняет:http://support.microsoft.com/kb/269238

мне больше повезло с использованием vbscript для вызова

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

.... и еще кое-что, но только для того, чтобы позволить запросу пройти через это.

        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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top