WSO2 ESB - 如何构建soapenv:用于远程服务调用的主体

时间:2012-10-18 22:48:57

标签: web-services soap wso2 wso2esb

我有远程Web服务,我需要从WSO2 ESB代理服务调用,并想知道如果我需要构建肥皂的WSDL文件:人体的元素手动通过XSLT /富集或有一种方法生成soapenv:Body包含来自WSDL并且可能替换'?'对于价值观。

例如,如果您已经使用过soapUI,那么在您知道在项目中导入WSDL文件时,可以自动生成包含所有XML元素和值标记的信封。 WSO2 ESB中的TryIt工具也是如此。

以下是导入WSDL后soapUI中自动生成的soapenv:Envelope的示例:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:abc="http://abc.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <abc:RegisterCandidate>
         <abc:NameFirst>?</abc:NameFirst>
         <abc:NameMiddle>?</abc:NameMiddle>
         <abc:NameLast>?</abc:NameLast>
         <abc:PhoneHome>?</abc:PhoneHome>
         <abc:EmailAddress>?</abc:EmailAddress>
         <abc:Address1>?</abc:Address1>
         <abc:Address2>?</abc:Address2>
         <abc:City>?</abc:City>
         <abc:State>?</abc:State>
         <abc:ZipCode>?</abc:ZipCode>
         <abc:Country>?</abc:Country>
      </abc:RegisterCandidate>
   </soapenv:Body>
</soapenv:Envelope>

这是否可以在代理服务中通过任何可用的读取器来读取WSDL并生成soapenv:Body及其XML标记(在上面的代码中它将是abc:RegisterCandidate及其子代)?我已经使用XSL模板完成了它,但它是手动的而不是非常优雅。

我已经找到了几篇文章/博客网上关于在WSO2 ESB调用远程Web服务,哪些开发商在做中有插入的soapenv所需的XML元素编写代理服务:配合使用美体XSL模板具有正确/完整的SOAP消息,然后将其发送(发送中介)到远程Web服务服务器。

谢谢。

1 个答案:

答案 0 :(得分:1)

根据您的要求,无法从远程服务的wsdl生成soap主体。但是有一种比使用xslt更简单的方法。那就是使用payload factory mediator。您可以使用xpath定义有效负载并分配值,如示例所示。