从 groovy 脚本使用 Web 服务的问题

Posted

技术标签:

【中文标题】从 groovy 脚本使用 Web 服务的问题【英文标题】:Problems consuming web service from groovy script 【发布时间】:2010-07-07 08:47:21 【问题描述】:

我在尝试从 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"

工作正常,但是一旦我尝试使用另一个服务,它就会崩溃并出现以下错误:

信息:创建的类:javac:否 源文件用法:javac 使用 -help 获取列表 可能的选项 2010 年 7 月 7 日 9:55:57 org.apache.cxf.endpoint.dynamic.DynamicClientFactory createC 客户端 GRAVE:无法编译 http://xxx:8080/x/services/xxx?wsdl 的 java 文件。 抓住: groovyx.net.ws.exceptions.InvokeException: java.lang.NullPointerException 在 groovy-ws.run(groovy-ws.groovy:13)

代码完全相同(除了对应一个内部服务器的 wsdl url)。我发现它们之间的主要区别是第二个 wsdl 是 RPC 样式,而第一个不是。我已经读过使用 WSClient 库从 groovy 使用 RPC 之类的 Web 服务存在一些问题。 ¿ 有谁知道如何使用 WSClient 来使用像 web 服务这样的 RPC? ¿ 任何人都可以启发我吗?

非常感谢

【问题讨论】:

【参考方案1】:

GroovyWS 中似乎有一个错误,在他们的 JIRA 上记录了here。

目前尚未解决,于 2010 年添加。

我个人在使用 Groovy 1.8.0、GroovyWS 0.5.2 的普通示例服务之外的任何东西都遇到了同样的错误

希望有人能找到问题并解决它 - WSClient 绝对可以成为传统 CXF/JAXB 的绝佳替代品

【讨论】:

【参考方案2】:

不要使用 WSClient 是我能给你的最佳答案。除了简单的服务,我发现 WSClient 不能很好地工作。而是使用您最熟悉的基于 Java 的 Web 服务客户端,并从 Groovy 调用它。

【讨论】:

以上是关于从 groovy 脚本使用 Web 服务的问题的主要内容,如果未能解决你的问题,请参考以下文章

从 groovy 脚本调用时将 sessionFactory 注入 grails 服务

从 groovy 脚本运行 gsutil:找不到 Python 可执行文件

在 groovy 脚本之间传递 webdriver 实例?

在另一个 groovy 中包含一个 groovy 脚本

Groovy开发环境

Groovy Jenkins 脚本中的 sh 命令