代码之家  ›  专栏  ›  技术社区  ›  Yossale

Groovy中的Soap-继续获取NoSuchMethodError

  •  0
  • Yossale  · 技术社区  · 14 年前

    我是groovy&soap的新手,所以我可能会错过一些东西:

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

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

    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 回复  |  直到 14 年前
        1
  •  2
  •   tim_yates    14 年前

    这个 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是错误的,但是。。。我会继续找的

        2
  •  0
  •   Yossale    14 年前