首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >groovy-wslite markupbuilder soap客户端中的稀疏命名空间问题

groovy-wslite markupbuilder soap客户端中的稀疏命名空间问题
EN

Stack Overflow用户
提问于 2013-05-06 17:42:18
回答 1查看 1.7K关注 0票数 1

请帮帮忙,我对groovy的markupbuilder有问题。

针对终结点MYENDPOINT和操作MYACTION的工作SOAP请求:

代码语言:javascript
复制
<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对象中的一个闭包,不起作用(关于命名空间问题,我认为:

代码语言:javascript
复制
 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()
 }
}

目前它说:

代码语言:javascript
复制
wslite.soap.SOAPFaultException: soapenv:INIT-ERR - The element category, is required in the header.

尽管有指定的类别...我只是被困在这里,有人知道如何创造

代码语言:javascript
复制
<urn:DataTables urn:table_name="testtable">

在标记闭包内正确吗?

我认为这就是问题所在,因为我有另一个but服务在相同的逻辑上运行quity,但它没有……

如果有人能帮上忙那就太好了,我正在做第二天的工作…

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-08 23:27:35

如果希望与结构完全匹配,则应使用envelopeAttributes在信封上定义urn命名空间,并将其用于嵌套项,如下所示:

代码语言:javascript
复制
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')            
                }
             }
        }
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16395975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档