вызывать веб-сервисы, используя VBA - PullRequest
0 голосов
/ 19 марта 2019

Я сталкиваюсь с проблемой при вызове 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...