我在尝试从groovy脚本中使用Web服务时遇到了一些问题。我正在使用WSClient库。
如果我执行在groovy网站上发布的示例:
@Grab(group='org.codehaus.groovy.modules', module='groovyws', version='0.5.2')
import groovyx.net.ws.WSClient
proxy = new WSClient("http://www.w3schools.com/webservices/tempconvert.asmx?WSDL", this.class.classLoader)
proxy.initialize()
result = proxy.CelsiusToFahrenheit(0)
println "You are probably freezing at ${result} degrees Farhenheit"
工作正常,但是一旦我尝试使用其他服务,它就会崩溃并出现此错误:
INFO:创建的类:javac:no 源文件用法:javac 使用-help获取列表 可能的选择07-jul-2010 9点55分57秒 org.apache.cxf.endpoint.dynamic.DynamicClientFactory createC lient GRAVE:无法编译 http://xxx:8080/x/services/xxx?wsdl的java文件。 抓住: groovyx.net.ws.exceptions.InvokeException: java.lang.NullPointerExceptio n 在groovy-ws.run(groovy-ws.groovy:13)
代码完全相同(除了与一个内部服务器相对应的wsdl url)。我发现它们之间的主要区别在于第二个wsdl是RPC样式而第一个不是。我已经读过使用WSClient lib从groovy中使用RPC之类的Web服务有一些问题。 ¿有没有人知道如何使用WSClient来使用类似Web服务的RPC? ¿有人可以开导我吗?
非常感谢
答案 0 :(得分:1)
GroovyWS中似乎存在一个错误,在他们的JIRA上记录了here。
目前尚未解决,并于2010年添加。
我个人在使用Groovy 1.8.0,GroovyWS 0.5.2
之外的其他任何事情上都遇到了同样的错误。希望有人能找到问题并修复它 - WSClient绝对可以替代传统的CXF / JAXB
答案 1 :(得分:0)
不使用WSClient是我能给你的最佳答案。除了简单的服务,我发现WSClient不能正常工作。而是使用您最熟悉的基于Java的Web服务客户端,并从Groovy中调用它。