本文介绍了GroovyWS和复杂的请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 这是soapUI生成的示例请求: < soapenv:信封的xmlns:soapenv = http://schemas.xmlsoap.org/soap/envelope/ 的xmlns:DEX =http://www.temp.com/com/dex> < soapenv:Header /> < soapenv:Body> < dex:executeRequest> <! - 可选: - > < a>?< / a> <! - 可选: - > < b>?< / b> <! - 可选: - > <参数> < parameter> <! - 可选: - > < key>?< / key> <! - 可选: - > <值>?< /值> < / parameter> < /参数> <! - 可选: - > < c>?< / c> <! - 可选: - > < d>?< / d> < / dex:feedrequest> < / soapenv:Body> < / soapenv:Envelope> 一段时髦的代码: def proxy = webService.getClient(grailsApplication.config.ws.endpoint); proxy.processdRequest(?); 所以我应该通过而不是?。 感谢您的帮助。 --vova。 解决方案非常感谢Bill。 我只想给未来的读者添加一些信息。 要启用日志记录为Grails中GroovyWS: 的log4j = {调试 'grails.app', 'groovyx.net.ws','org.apache.cxf'} 如上所述,您可以看到类的名称。 还有一件事: parameters 可能有不同的类型。不是列表<?> 。这就是为什么它应该被创建。 def params = proxy.create('com.temp.feeds.FeedRequestType $ Parameters'); 要检索新创建对象的可用方法和字段,您可以使用Groovy反射: params.class.methods.each { println it; } params.class.fields.each { println it; } 这就是全部! -vova I've faced with a problem of sending complex requests with GroovyWS.This is sample request generated by 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>the piece of groovy code:def proxy = webService.getClient(grailsApplication.config.ws.endpoint);proxy.processdRequest(?);So what I should pass instead of ?.Thanks for you help.-vova. 解决方案 Many thanks Bill.I just want to add some info for future readers.To turn on logging for GroovyWS in Grails:log4j = { debug 'grails.app', 'groovyx.net.ws', 'org.apache.cxf'}With this as mentioned Bill you can see the names of the classes.One more thing: parameters may have different type. Not List<?>. That's why it should be created too. def params = proxy.create('com.temp.feeds.FeedRequestType$Parameters');To retrieve available methods and fields for newly created objects you can use Groovy reflection:params.class.methods.each{ println it;}params.class.fields.each{ println it;}That's all!-vova 这篇关于GroovyWS和复杂的请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 10-23 14:32