请帮帮忙,我对groovy的markupbuilder有问题。
针对终结点MYENDPOINT和操作MYACTION的工作SOAP请求:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:SPECIAL">
<soapenv:Header>
<urn:xsdInfo>
<urn:schemaLocation>SCHEMALOCATION</urn:schemaLocation>
</urn:xsdInfo>
<urn:category>Data Tables</urn:category>
<urn:userInfo>
<urn:sessionId>XXXXX</urn:sessionId>
</urn:userInfo>
</soapenv:Header>
<soapenv:Body>
<urn:add>
<urn:DataTables urn:table_name="testtable">
<!--Zero or more repetitions:-->
<urn:each_record>
<urn:s1>Somedinputdata</urn:s1>
</urn:each_record>
</urn:DataTables>
</urn:add>
</soapenv:Body>
</soapenv:Envelope>尝试用makrup构建器复制它,它是wslite SOAP-Client对象中的一个闭包,不起作用(关于命名空间问题,我认为:
def bmClient = new SOAPClient('MYENDPOINT')
def response = bmClient.send(SOAPAction:'MYACTION') {
header{
xsdInfo('xmlns':'urn:soap.bigmachines.com'){
schemaLocation('SCHEMALOCATION')
}
category('Data Tables')
userInfo(){
sessionId('XXXXX')
}
}
body{
add('xmlns':'urn:SPECIAL'){
// PROBLEM IS HERE: should be urn:table_name but then it says urn is not defined as namespace..
DataTables('table_name':'testtable'){
each_record(){
s1('something')
}
}
}
}
}
return response.addResponse.status.message.text()
}catch(e){
println 'Problem in addToDataTable Session ID: '+e.printStackTrace()
}
}目前它说:
wslite.soap.SOAPFaultException: soapenv:INIT-ERR - The element category, is required in the header.尽管有指定的类别...我只是被困在这里,有人知道如何创造
<urn:DataTables urn:table_name="testtable">在标记闭包内正确吗?
我认为这就是问题所在,因为我有另一个but服务在相同的逻辑上运行quity,但它没有……
如果有人能帮上忙那就太好了,我正在做第二天的工作…
发布于 2013-05-08 23:27:35
如果希望与结构完全匹配,则应使用envelopeAttributes在信封上定义urn命名空间,并将其用于嵌套项,如下所示:
def response = bmClient.send(SOAPAction:'MYACTION') {
envelopeAttributes ('xmlns:urn' : 'urn:SPECIAL') // watch out for brackets here!
header{
'urn:xsdInfo'{
'urn:schemaLocation'('SCHEMALOCATION')
}
'urn:category'('Data Tables')
'urn:userInfo' {
'urn:sessionId'('XXXXX')
}
}
body{
'urn:add' {
'urn:DataTables'('urn:table_name':'testtable'){
'urn:each_record'{
'urn:s1'('something')
}
}
}
}
}https://stackoverflow.com/questions/16395975
复制相似问题