也许最简单的方法是在WSDL文件上使用wsimport来生成客户端存根。然后,您可以从Groovy的存根中调用方法,就像您从Java调用它们一样。
例如,考虑位于http://terraservice.net/TerraService.asmx?wsdl的Microsoft TerraServer的WSDL文件。然后你运行类似于
wsimport -d src -keep http://terraservice.net/TerraService.asmx?WSDL
它将所有编译后的存根放到src目录中。然后,如果你想查阅了大量的Web服务,为所有他们的存根,你可以写Groovy代码像
import com.terraserver_usa.terraserver.*;
TerraServiceSoap sei = new TerraService().getTerraServiceSoap()
Place home = new Place(city:'Boston',state:'MA',country:'US')
def pt = sei.convertPlaceToLonLatPt(home)
println "$pt.lat, $pt.lon"
assert Math.abs(pt.lat - 42.360000) < 0.001
assert Math.abs(pt.lon - -71.05000) < 0.001
。或者您可以使用动态代理。
尽管如此,底线是让Java能够完成它已经做得很好的事情,并使用Groovy来让您的生活更轻松。
非常全面的答案。 – 2012-06-15 09:56:28