加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

grails – GroovyWS和复杂的请求

发布时间:2020-12-14 16:36:32 所属栏目:大数据 来源:网络整理
导读:我遇到了使用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 !--Option
我遇到了使用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认为类名实际应该是什么.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读