Soap wslite使用xml而不是内联

Soap wslite使用xml而不是内联,soap,groovy,Soap,Groovy,如果你使用XML版本的这篇文章是可行的,但是我会不厌其烦地尝试找出内联版本不可行的原因。这几乎不是一个复杂的函数 import wslite.soap.SOAPClient import wslite.soap.* import groovy.xml.Namespace proxy = new SOAPClient("http://www.predic8.com:8080/crm/CustomerService?wsdl") /* // THIS WORKS list = proxy.sen

如果你使用XML版本的这篇文章是可行的,但是我会不厌其烦地尝试找出内联版本不可行的原因。这几乎不是一个复杂的函数

import wslite.soap.SOAPClient
import wslite.soap.*
import groovy.xml.Namespace

proxy = new SOAPClient("http://www.predic8.com:8080/crm/CustomerService?wsdl")

/*
// THIS WORKS
list = proxy.send(
'''<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"xmlns:ns="http://predic8.com/wsdl/crm/CRMService/1/">
   <soapenv:Header/>
   <soapenv:Body>
      <ns:get>
     <id>99</id>
    </ns:get>
 </soapenv:Body>
  </soapenv:Envelope>'''
  )
    */

   //return list.getText()

//THIS DOES NOT
list = proxy.send(SOAPAction:'http://www.predic8.com:8080/crm/CustomerService'){
body{
    get(xmlns:ns="http://predic8.com/wsdl/crm/CRMService/1/"){
        id(99)
        }
} //end body
} //end proxy

return list.getText()
导入wslite.soap.SOAPClient
导入wslite.soap*
导入groovy.xml.Namespace
代理=新的SOAPClient(“http://www.predic8.com:8080/crm/CustomerService?wsdl")
/*
//这很有效
list=proxy.send(
'''
99
'''
)
*/
//return list.getText()
//这是不可能的
list=proxy.send(SOAPAction:'http://www.predic8.com:8080/crm/CustomerService'){
身体{
获取(xmlns:ns=”http://predic8.com/wsdl/crm/CRMService/1/"){
身份证号码(99)
}
}//端体
}//结束代理
return list.getText()

任何能够理解原因的人?

属性都应该作为映射传递,因此下面对代码所做的更改应该是可行的

...
'ns:get'('xmlns:ns': "http://predic8.com/wsdl/crm/CRMService/1/"){
...


我希望事情能那么容易。。一直以来,我都在房子周围,用名称空间和非名称空间的组合。如果您在该代码中运行getAll,那么它工作得非常好,并且该服务在SoapUi中工作,所以这是令人沮丧的部分..明白了!需要是“ns1:get”(…)
...
get('xmlns': "http://predic8.com/wsdl/crm/CRMService/1/"){
...