显然,Groovy很容易使用Web服务。它可以使用需要JAX-RPC而不是JAX-WS的Web服务吗?我应该使用旧版本的Groovy或其库吗?
答案 0 :(得分:2)
使用XML-RPC Web服务非常简单。您需要{class 3}}以及类路径中的Groovy XML-RPC库。
我写了一些groovy脚本来处理我们的Smack wiki,这是一个使用XML-RPC检索wiki页面的简短示例:
import groovy.net.xmlrpc.*
def c = new XMLRPCServerProxy("http://host:port/rpc/xmlrpc")
def token = c.confluence1.login("username","password")
def page = c.confluence1.getPage(token, "SPACE", "pagename")
println page.content
c.confluence1.logout(token);
使用XMLRPCServerProxy
访问XML-RPC服务。如果您的服务需要复杂参数作为参数或返回一个参数,则这些参数表示为Groovy映射,属性名称为键,其值为相应值。在上面的脚本中,服务getPage
返回一个Page对象,它是一个地图,但是你可以使用Groovy中的点符号直接访问地图的密钥,page.content
与{{{1}相同1}}。
答案 1 :(得分:0)
你是什么意思“它能否使用需要JAX-RPC而不是JAX-WS的Web服务”?您对Groovy方面有何不同?您是否尝试将该网络服务称为documented:
import groovyx.net.ws.WSClient
def proxy = new WSClient("http://localhost:6980/MathService?wsdl", this.class.classLoader)
proxy.initialize() // from 0.5.0
def result = proxy.add(1.0 as double, 2.0 as double)
assert (result == 3.0)
result = proxy.square(3.0 as double)
assert (result == 9.0)
你有任何特别的错误吗?
答案 2 :(得分:0)
由于Groovy可以使用已编译的Java类,因此有时访问基于SOAP的Web服务的最简单方法是生成存根并编写使用它们的Groovy客户端。使用“wsimport”工具(JAX-WS)或wsdl2java(JAX-RPC)生成存根,并像往常一样编写Groovy类。