Сторона запроса Excel может быть обработана с помощью этого кода VBA.
Sub GetStuff()
Dim objXML As Object
Dim strData As String
Dim strResponse As String
strData = "Request"
Set objXML = CreateObject("MSXML2.XMLHTTP")
objXML.Open "POST", "www.example.com/api?" & strData, False
objXML.Send
strResponse = objXML.responsetext
MsgBox strResponse
End Sub
Ответ 2 · рейтинг 8 · Andrew
Если вам нужно отправить входной xml в качестве тела сообщения, вот как вы можете это сделать. Возможно, вам придется добавить больше или изменить заголовки запроса, чтобы он работал на вас.
Использование объекта DOMDocument упрощает работу с вашими XML-документами.
Добавьте ссылку на проект;
Службы Microsoft WinHTTP, версия 5.1
Microsoft XML, версия 6.0
Пример:
Dim xmlInput As String
xmlInput = "<YourXmlRequest></YourXmlPayload>"
Dim oXmlHttp As MSXML2.XMLHTTP60
Set oXmlHttp = New MSXML2.XMLHTTP60
oXmlHttp.Open "POST", serviceURL, False, "UserName", "Password"
oXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
oXmlHttp.setRequestHeader "Connection", "Keep-Alive"
oXmlHttp.setRequestHeader "Accept-Language", "en"
oXmlHttp.send xmlInput
Debug.Print oXmlHttp.responseText
Dim oXmlReturn As MSXML2.DOMDocument60
Set oXmlReturn = New MSXML2.DOMDocument60
oXmlReturn.loadXML oXmlHttp.responseText
Я предлагаю использовать WinHttp.WinHttpRequest.5.1 вместо MSXML2.XMLHTTP всякий раз, когда вам нужна аутентификация Windows, потому что это позволяет вам использовать учетные данные текущего пользователя для входа в систему. Вот пример
Dim http As Object
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.SetAutoLogonPolicy 0
http.Open "POST", "http://myUrl.html?param1=value1", False
http.setRequestHeader "Content-Type", "text/json"
http.setRequestHeader "User-Agent", "Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405"
http.send ("")