2010-10-10 4 views
0

Новичок вопрос:Мыла в Groovy - продолжать получать NoSuchMethodError

Я новичок в Groovy & мыла, так что я мог упустить что-то здесь:

Я пытаюсь общаться с очень простым веб-сервис:

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

wsdl похоже, что метод называется Method1, а не ConversionRate. Может быть ошибка с вашим тестовым мыльным сервисом? –

+0

@tim_yates Я переключил тест, потому что предыдущий имеет очень время отклика - и я забыл перехватить текст. Исправлена. Благодаря! – Yossale

+0

два комментария, (1) не является ли SoapClient устаревшим? (2) попробуйте сначала проверить сервис с помощью SoapUI –

ответ

0

Ну, это не решило, но я перебрался на GroovyWS, и после небольшого зависания, это сработало. См. here

2

help page for Groovy Soap говорит он устарел (мар 03, 2008), так что, вероятно, не было никакой любви долгое время: -/

Он рекомендует 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 не так, однако ... Я буду продолжать смотреть

Смежные вопросы