如何将GroovySOAP客户端代码转换为groovy-wslite?

时间:2013-10-02 16:02:34

标签: grails soap groovy

您好,我在确定如何访问此网络服务时遇到了一些麻烦:http://www.webservicex.net/CurrencyConvertor.asmx?WSDL

使用groovy Wslite库,似乎可以使用折旧的Groovy Soap库工作,但我不允许使用它。

这里介绍了库: Groovy Soap Use

Groovy-Wslite

我对groovy和这些技术都是全新的,所以请原谅我的无知。

基本上我想要这段代码:

import groovy.swing.SwingBuilder
import groovy.net.soap.SoapClient

proxy = new SoapClient("http://www.webservicex.net/CurrencyConvertor.asmx?WSDL")

def currency = ['USD', 'EUR', 'CAD', 'GBP', 'AUD']
def rate = 0.0

swing = new SwingBuilder()

refresh = swing.action(
  name:'Refresh',
  closure:this.&refreshText,
  mnemonic:'R'
)

frame = swing.frame(title:'Currency Demo') {
 panel {
         label 'Currency rate from '
         comboBox(id:'from', items:currency)
         label ' to '
         comboBox(id:'to', items:currency)
         label ' is '
         textField(id:'currency', columns:10, rate.toString())
         button(text:'Go !', action:refresh)
       }
 }
 frame.pack()
 frame.show()

 def refreshText(event) {
   rate = proxy.ConversionRate(swing.from.getSelectedItem(), swing.to.getSelectedItem())
   swing.currency.text = rate
}

转换为使用groovy-wslite库,无论我做什么,我都无法工作。

这是Wslite库。

wslite library

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

我发现首先使用像soapUI这样的工具来确定服务的期望值是有帮助的。从那里开始,使用标记构建器来构建该请求。以下应该来自groovyConsole:

@Grab(group='com.github.groovy-wslite', module='groovy-wslite', version='0.8.0')
import wslite.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('USD')
        }
    }
}

assert response
assert 200 == response.httpResponse.statusCode

println response.ConversionRateResponse.ConversionRateResult.text()
相关问题