如何在 wslite soap 中使用 nil api

how to use nil with wslite soap api

Grails 2.4.4 + wslite 0.7.2.0 可以这样调用SOAP服务:

    def client = new SOAPClient('http://www.webservicex.net/CurrencyConvertor.asmx')
    def response = client.send(SOAPAction:'http://www.webserviceX.NET/ConversionRate') {
        body {
            ConversionRate('xmlns':'http://www.webserviceX.NET/') {
                FromCurrency('GBP')
                ToCurrency('EUR')
            }
        }
    }

问题是我正在调用一个需要使用 nil 的服务,例如

 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
          xmlns:ns="bla" xmlns:i="w3.org/2001/XMLSchema-instance">
   :
 <ns:IdentityToken i:nil="true"></ns:IdentityToken>

有没有办法使用插件来做到这一点?

想通了。我不知道这是否是正确的方法,但它似乎适用于我们的服务。下面只是为了说明使用 nil 的策略:

def client = new SOAPClient('http://www.webservicex.net/CurrencyConvertor.asmx')
def response = client.send(SOAPAction:'http://www.webserviceX.NET/ConversionRate') {
    body {
        ConversionRate('xmlns':'http://www.webserviceX.NET/' , 'xmlns:i': "http://www.w3.org/2001/XMLSchema-instance") {
            FromCurrency("i:nil": "true", '')
            ToCurrency('EUR')
        }
    }
}