【问题标题】:WSO2 ESB - How to build soapenv:Body for remote service callWSO2 ESB - 如何构建soapenv:远程服务调用的主体
【发布时间】:2012-10-18 22:48:57
【问题描述】:

我有远程 Web 服务的 WSDL 文件,我需要从 WSO2 ESB 中的代理服务调用,我想知道我是否需要通过 XSLT/Enrich 手动构造soap:Body 的元素,或者有一种方法从 WSDL 生成 soapenv:Body 的包含并可能替换“?”为价值观。

例如,如果您之前使用过soapUI,那么当您在项目中导入WSDL 文件时,会自动生成soapenv:Envelope,其中包含所有XML 元素和它们的值的问号。 WSO2 ESB 中的 TryIt 工具也是如此。

这是一个在导入 WSDL 后自动生成的 soapenv:Envelope 在soapUI 中的示例:

<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 并生成带有 XML 标记的 soapenv:Body 的中介(在上面的代码中是 abc:RegisterCandidate 及其子级)?我使用 XSL 模板完成了它,但它是手动的,不是很优雅。

我在网上找到了一些关于在 WSO2 ESB 中编写调用远程 Web 服务的代理服务的文章/博客,以及开发人员在其中所做的工作是在 soapenv:Body 中插入所需的 XML 元素,并使用XSL 模板具有正确/完整的 SOAP 消息,然后将其发送(发送中介)到远程 Web 服务服务器。

谢谢。

【问题讨论】:

    标签: web-services soap wso2 wso2esb


    【解决方案1】:

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

    【讨论】:

    • 谢谢阿米拉。如果我对这个问题不够清楚,我深表歉意。在这种情况下,我尝试使用 WSO2 ESB 从磁盘读取文件(使用 vfs 传输作为代理),将数据转换为完整的 SOAP 消息并调用将导入此数据的远程 Web 服务.所以这个代理服务只是读取、转换和发送。它将独立运行而不会被任何东西调用。问题是我可以从远程 WS 的 WSDL 中自动生成 soapenv:Body's contains,然后输入这些 XML 元素的值还是需要在 XSL 中构建它?
    • 无法按照您的要求从远程服务的 wsdl 生成肥皂正文。但是有一种比使用 xslt 更简单的方法。也就是使用payload factory mediator. 可以定义payload并使用xpath赋值,如示例所示。
    • 我已经查看了有效负载工厂调解器,它看起来确实更简单、使用起来更快。感谢您的帮助。请使用您昨天的最后一条评论编辑您的初始答案,以便我接受。
    • 我已经用我最后的评论编辑了最初的答案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多