Groovy中的肥皂 - 继续得到NoSuchMethodError

时间:2010-10-10 09:46:09

标签: soap groovy

新手问题:

我是groovy&的新手肥皂,所以我可能会错过这里的东西:

我正在尝试与一个非常基本的Web服务进行通信:

import groovy.net.soap.SoapClient
... 
def proxy = new SoapClient("http://soapclient.com/xml/soapresponder.wsdl")
res = proxy.Method1("ABC", "123");
println (res);

似乎连接有效,但当我尝试调用“Method1(..)”时,我一直在

Exception in thread "main" java.lang.NoSuchMethodError: org.codehaus.groovy.runtime.InvokerHelper.getInstance()Lorg/codehaus/groovy/runtime/Invoker;
    at groovy.net.soap.SoapClient.invokeMethod(Unknown Source)

这是WSDL的相关部分:

<message name="Method1">
<part name="bstrParam1" type="xsd:string"/>
<part name="bstrParam2" type="xsd:string"/>
</message>
−
<message name="Method1Response">
<part name="bstrReturn" type="xsd:string"/>
</message>
−
<portType name="SoapResponderPortType">
−
<operation name="Method1" parameterOrder="bstrparam1 bstrparam2 return">
<input message="tns:Method1"/>
<output message="tns:Method1Response"/>
</operation>
</portType>

我做错了什么?

2 个答案:

答案 0 :(得分:2)

help page for Groovy Soap表示它已经被弃用(2008年3月3日),所以很可能已经有很长一段时间没有爱了: - /

它建议use GroovyWS,该页面说明这应该有效:

@Grab(group='org.codehaus.groovy.modules', module='groovyws', version='0.5.2')
import groovyx.net.ws.WSClient

try {
  proxy = new WSClient( "http://soapclient.com/xml/soapresponder.wsdl", this.class.classLoader)
  proxy.initialize()

  result = proxy.Method1("ABC", "123")
  println res
}
catch( e ) {
  e.printStackTrace()
}

然而,当你运行它时,你得到:

[snip]
Caused by: org.xml.sax.SAXParseException: Unexpected <schema> appears at line 0 column 0
    at com.sun.xml.xsom.impl.parser.NGCCRuntimeEx.unexpectedX(NGCCRuntimeEx.java:488)
    ... 54 more

我不明白为什么这个WSDL错了但是......我会继续寻找

答案 1 :(得分:0)

嗯,它没有解决,但我确实转移到GroovyWS并且经过一些依赖地狱后,它起作用了。见here