0

嗨,我在弄清楚如何访问此 Web 服务时遇到了一些麻烦: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 库

任何帮助是极大的赞赏。

4

1 回答 1

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()
于 2013-10-02T22:32:27.020 回答