Я сталкиваюсь с проблемой при вызове BMC Remedy WebServices из VBA,
с использованием приведенного ниже кода. Я пытаюсь перехватить ответ от веб-службы на переменную a = objHTTP.responseText Не уверен, что это правильный способ сделать это.
Sub InvokeWS()
Dim sMsg As String
Dim sURL As String
Dim sEnv As Variant
Dim a As Variant
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
sURL = "Web Service URl"
sEnv = "<?xml version=""1.0"" encoding=""utf-8""?>"
sEnv = sEnv & " <soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:urn=""urn:CHG_ChangeInterface_WS"">"
sEnv = sEnv & "<soapenv:Header>"
sEnv = sEnv & "<urn:AuthenticationInfo>"
sEnv = sEnv & "xmlns:urn=""urn:CHG_ChangeInterface_WS"""
sEnv = sEnv & "<urn:userName>username</urn:userName>"
sEnv = sEnv & "<urn:password>Password</urn:password>"
sEnv = sEnv & "</urn:AuthenticationInfo>"
sEnv = sEnv & "</soapenv:Header>"
sEnv = sEnv & "<soapenv:Body>"
sEnv = sEnv & "<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:urn=""urn:CHG_ChangeInterface_WS"">"
sEnv = sEnv & "xmlns:urn=""urn:CHG_ChangeInterface_WS"""
sEnv = sEnv & "<urn:Infrastructure_Change_ID>Change ID By Remedy </urn:Infrastructure_Change_ID>"
sEnv = sEnv & "</urn:Change_Query_Service>"
sEnv = sEnv & "</soapenv:Body>"
sEnv = sEnv & "</soapenv:Envelope>"
objHTTP.Open "Post", sURL, False
objHTTP.setRequestHeader "Content-Type", "text/xml"
'ObjHTTP.setRequestHeader "Change_Query_Service", "http://schemas.xmlsoap.org/soap/envelope/"
objHTTP.setRequestHeader "SOAPAction", "Web Service URl"
Worksheets("Sheet1").Range("F4").Value = sEnv
objHTTP.send (sEnv)
a = objHTTP.responseText
Worksheets("Sheet1").Range("A1").Value = a
MsgBox a
'clean up code
Set objHTTP = Nothing
Set xmlDoc = Nothing
End Sub