我遇到了使用 GroovyWS 发送复杂请求的问题。
这是由soapUI生成的示例请求:
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:dex="http://www.temp.com/com/dex"
>
<soapenv:Header/>
<soapenv:Body>
<dex:executeRequest>
<!--Optional:-->
<a>?</a>
<!--Optional:-->
<b>?</b>
<!--Optional:-->
<parameters>
<!--Zero or more repetitions:-->
<parameter>
<!--Optional:-->
<key>?</key>
<!--Optional:-->
<value>?</value>
</parameter>
</parameters>
<!--Optional:-->
<c>?</c>
<!--Optional:-->
<d>?</d>
</dex:feedrequest>
</soapenv:Body>
</soapenv:Envelope>
一段常规代码:
def proxy = webService.getClient(grailsApplication.config.ws.endpoint);
proxy.processdRequest(?);
所以我应该通过什么而不是?.
谢谢你的帮助。
-vova.
GroovyWS 为您需要的每个参数类型动态创建类,以便将数据传递到 Web 服务调用。例如,如果 Web 服务调用是:
public int passSomeArgs( Arg1Type a, Arg2Type b );
GroovyWS 将动态创建一个 Arg1Type 类和一个 Arg2Type 类,您可以通过代理上的方法访问它们。
// this will instantiate an Arg1Type for you
def arg1 = proxy.create( "ns1.ns2.Arg1Type" );
// this will instantiate an Arg2Type for you
def arg2 = proxy.create( "ns1.ns2.Arg2Type" );
然后,您可以使用数据填充 arg1/arg2 实例并进行调用:
int ret = proxy.passSomeArgs( arg1, arg2 );
请注意,正在创建的类中可能涉及一些名称空间。我使用 GroovyWS 处理 WSDL 时打印的 CXF 日志记录来查看 CXF 认为类名实际上应该是什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)