grails – GroovyWS和复杂的请求

我遇到了使用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服务调用所需的每个参数类型动态创建类.例如,如果webservice调用是:

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认为类名实际应该是什么.

相关文章

背景:    8月29日,凌晨4点左右,某服务告警,其中一个...
https://support.smartbear.comeadyapi/docs/soapui/steps/g...
有几个选项可用于执行自定义JMeter脚本并扩展基线JMeter功能...
Scala和Java为静态语言,Groovy为动态语言Scala:函数式编程,...
出处:https://www.jianshu.com/p/ce6f8a1f66f4一、一些内部...
在运行groovy的junit方法时,报了这个错误:java.lang.Excep...