可能最简单的方法是在 WSDL 文件上使用 wsimport 来生成客户端存根。然后,您可以从 Groovy 调用存根中的方法,就像在 Java 中调用它们一样。
例如,考虑 Microsoft 的 TerraServer 的 WSDL 文件,该文件位于http://terraservice.net/TerraService.asmx?wsdl。然后你运行类似的东西
wsimport -d src -keep http://terraservice.net/TerraService.asmx?WSDL
它将所有已编译的存根放在 src 目录中。然后你可以编写像这样的 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
如果您想访问大量 Web 服务,请为所有这些服务生成存根。或者您可以改用动态代理。
不过,底线是让 Java 做它已经做得很好的事情,并在它使您的生活更轻松的地方使用 Groovy。