您好,我在确定如何访问此网络服务时遇到了一些麻烦:http://www.webservicex.net/CurrencyConvertor.asmx?WSDL
使用groovy Wslite库,似乎可以使用折旧的Groovy Soap库工作,但我不允许使用它。
这里介绍了库: Groovy Soap Use
我对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库。
非常感谢任何帮助。
答案 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()