Ошибка заголовка SOAPAction с VBA в Excel 2010

Я пытаюсь получить некоторую информацию через SOAP-запрос в VBA в Excel 2010. Я не использовал это раньше, но я делал поиск и адаптировал разные коды, чтобы придумать то, что, как мне кажется, должно работать, но я все время застреваю та же ошибка (нет заголовка SOAPAction). Я попробовал WSDL в SoapUI, и он работает, поэтому я не уверен, где я ошибаюсь.

WSDL Я делаю запрос:

http://www.banxico.org.mx/DgieWSWeb/DgieWS?WSDL 

Ошибка, которую я продолжаю получать:

 <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <soapenv:Fault> <faultcode xmlns:ns1="http://xml.apache.org/axis/">ns1:Client.NoSOAPAction</faultcode> <faultstring>no SOAPAction header!</faultstring> <detail> <ns2:hostname xmlns:ns2="http://xml.apache.org/axis/">SERVAP9</ns2:hostname> </detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope> 

Код VBA, который я использую:

 Option Explicit Sub SOAP() 'Set and instantiate our working objects Dim Req As Object Dim sEnv As String Dim Resp As New MSXML2.DOMDocument60 Set Req = CreateObject("MSXML2.XMLHTTP") Set Resp = CreateObject("MSXML2.DOMDocument.6.0") Req.Open "Post", "http://www.banxico.org.mx/DgieWSWeb/DgieWS?WSDL", False 'Create SOAP envelope for submission to the Web Service sEnv = sEnv & "<soapenv:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:ws=""http://ws.dgie.banxico.org.mx"">" sEnv = sEnv & " <soapenv:Header/>" sEnv = sEnv & " <soapenv:Body>" sEnv = sEnv & " <ws:tiposDeCambioBanxico soapenv:encodingStyle=""http://schemas.xmlsoap.org/soap/encoding/""/>" sEnv = sEnv & " </soapenv:Body>" sEnv = sEnv & "</soapenv:Envelope>" ' Send SOAP Request Req.send (sEnv) ' Display results in MessageBox 'MsgBox Req.responseText Resp.LoadXML Req.responseText Debug.Print Req.responseText 'clean up code Set Req = Nothing Set Resp = Nothing End Sub 

    В этом блоке:

     'Create SOAP envelope for submission to the Web Service sEnv = sEnv & "<soapenv:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:ws=""http://ws.dgie.banxico.org.mx"">" sEnv = sEnv & " <soapenv:Header/>" sEnv = sEnv & " <soapenv:Body>" sEnv = sEnv & " <ws:tiposDeCambioBanxico soapenv:encodingStyle=""http://schemas.xmlsoap.org/soap/encoding/""/>" sEnv = sEnv & " </soapenv:Body>" sEnv = sEnv & "</soapenv:Envelope>" 

    Вы должны вынуть <soapenv:Header/> или добавить соответствующий </soapenv:header> после строки </soapenv:Body> .

    Давайте будем гением компьютера.