2016-09-09 35 views
6

Próbowałem utworzyć żądanie SOAP przy użyciu VBA, ale za każdym razem otrzymuję pustą odpowiedź. Proszę znaleźć kod poniżej. WSDL url: http://productavailabilityfeed.xxxx.com/Availability.svc?wsdlNie można uzyskać odpowiedzi z usługi internetowej za pomocą żądania SOAP za pomocą VBA

Dim sURL As String 
Dim sEnv As String 

'Set and Instantiate our working objects 
Set objHttp = CreateObject("MSXML2.XMLHTTP") 
sURL = "http://productavailabilityfeed.xxxx.com/Product.svc/soap" 


' we create our SOAP envelope for submission to the Web Service 
'sEnv = "<?xml version=""1.0"" encoding=""utf-8""?>" 
'sEnv = sEnv & "<soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope"">" 
sEnv = "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:tem=""http://tempuri.org/"">" 
sEnv = sEnv & " <soap:Header>" 
sEnv = sEnv & " <soap:Body>" 
sEnv = sEnv & " <tem:GetAccommodationByCode>" 
sEnv = sEnv & " <!--Optional:-->" 
sEnv = sEnv & " <tem:getAccommodationByCodeRequest>" 
sEnv = sEnv & " <!--Optional:-->" 
sEnv = sEnv & " <tem:credentials>" 
sEnv = sEnv & " <!--Optional:-->" 
sEnv = sEnv & " <tem:username>?</tem:username>" 
sEnv = sEnv & "<!--Optional:-->" 
sEnv = sEnv & "<tem:password>?</tem:password>" 
sEnv = sEnv & "</tem:credentials>" 
sEnv = sEnv & "<!--Optional:-->" 
sEnv = sEnv & "<tem:accommodationCode>?</tem:accommodationCode>" 
sEnv = sEnv & "<!--Optional:-->" 
sEnv = sEnv & "<tem:imageSize></tem:imageSize>" 
sEnv = sEnv & "<!--Optional:-->" 
sEnv = sEnv & "<tem:interval></tem:interval>" 
sEnv = sEnv & "</tem:getAccommodationByCodeRequest>" 
sEnv = sEnv & "</tem:GetAccommodationByCode>" 
sEnv = sEnv & "</soapenv:Body>" 
sEnv = sEnv & "</soapenv:Envelope>" 

'we invoke the web service 
'use this code snippet to invoke a web service which requires authentication 
objHttp.Open "GET", sURL, False 
objHttp.setRequestHeader "Content-Type", "text/xml" 
objHttp.setRequestHeader "SOAPAction", "http://tempuri.org/xxxx/GetAccommodationByCode" 

objHttp.send sEnv 
MsgBox objHttp.responseText 
'clean up code 
Set objHttp = Nothing 
Set XMLDOC = Nothing 
+1

To wygląda jak POST, a nie GET: wysyłasz treść do treści żądania, a nie do zapytania o URL. –

+0

Czy mógłbyś rozwinąć przykład? Jestem początkującym z webservices. –

+0

'objHttp.Open" GET ", sURL, Fałsz" –

Odpowiedz

1

pewno nie błąd w linii:

objHttp.Open "GET", sURL, False 

które powinny zostać zastąpione przez:

objHttp.Open "POST", sURL, False 

Ten błąd nie pozwoli Ci iść do przodu . Po skorygowaniu tego, możliwe, że będziesz musiał debugować wiadomość mydła. Po zmianie tego możesz nam powiedzieć, jak to działa.

+0

Zrobiłem to również, ale wciąż otrzymałem pustą odpowiedź –