如何从 LotusScript 代理调用 SOAP 1.2 Web 服务?

How can I call a SOAP 1.2 Web service from a LotusScript agent?

我在 windows 服务器上使用 Lotus Domino 9

我必须调用不再维护的 Soap 1.2 网络服务

Lotus Web 服务消费者 只接受 Soap 1.1 Web 服务,所以我不能使用这个很好的功能来绑定我的 Web 服务。

是否可以从我的 LotusScript 代理调用 Soap 1.2 网络服务?如果可以,需要哪些步骤?

最后我找到了使用 XMLHTTP 对象的解决方案

Sub Initialize
    Dim xmlhttp As Variant
    dim DOMDocument As Variant
    Dim soapEnvelope As String
    Dim webService As String
    dim username As String
    Dim password As String
    Dim strxml As String

    Set xmlhttp = CreateObject("Msxml2.XMLHTTP")
    Set DOMDocument = CreateObject("MSXML2.DOMDocument")

    webService = "http://server/path/service"

    username = "user1"
    password = "123456"

    soapEnvelope ={<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:doc="http://checkYourOwnEnvelopeDetails.com">}
    soapEnvelope =soapEnvelope & {<soap:Header/>}
    soapEnvelope =soapEnvelope & {<soap:Body>}

    ' ...use SoapUI to know the exact envelop structure

    soapEnvelope =soapEnvelope & {</soap:Body>}
    soapEnvelope =soapEnvelope & {</soap:Envelope>}

    DOMDocument.loadXML (soapEnvelope)

    Call xmlhttp.open("POST", webService, False,username,password)
    Call xmlhttp.setRequestHeader("Content-Type", "application/soap+xml;charset=UTF-8")
    Call xmlhttp.setRequestHeader("Username", username)
    Call xmlhttp.setRequestHeader("Password", password)

    ' again, use SoapUI to discover the exact name of the action
    Call xmlhttp.setRequestHeader("SOAPAction", "urn:getListAll")
    Call xmlhttp.send(DOMDocument.xml)
    strxml = xmlhttp.responseText

    ...    
End Sub