新手问题:
我是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>
我做错了什么?
答案 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