Grails 如何将GroovySOAP客户机代码转换为groovy wslite?

Grails 如何将GroovySOAP客户机代码转换为groovy wslite?,grails,soap,groovy,Grails,Soap,Groovy,您好,我在确定如何访问此web服务时遇到了一些问题: 使用groovy Wslite库似乎可以很好地处理被贬低的groovy Soap库,但我不允许使用它 以下介绍了这些库: 我对groovy和这些技术都是全新的,所以请原谅我的无知 基本上我想要这个代码: import groovy.swing.SwingBuilder import groovy.net.soap.SoapClient proxy = new SoapClient("http://www.webservicex.net/

您好,我在确定如何访问此web服务时遇到了一些问题:

使用groovy Wslite库似乎可以很好地处理被贬低的groovy Soap库,但我不允许使用它

以下介绍了这些库:

我对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库


非常感谢您提供的任何帮助。

我发现使用first这样的工具来确定服务期望的请求是什么很有帮助的。从这里开始,就需要使用标记生成器来构建该请求。从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()

我发现使用像first这样的工具来确定服务所期望的请求是什么很有帮助的。从这里开始,就需要使用标记生成器来构建该请求。从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()

啊,太好了!感谢您的转换和让我了解该工具!啊,太好了!感谢您的转换和让我了解该工具!