【问题标题】:Create a multipart response with WSO2 ESB使用 WSO2 ESB 创建多部分响应
【发布时间】:2013-06-21 13:24:32
【问题描述】:

我正在尝试创建一个 WSO2 ESB 代理,它将生成一个 HTTP 多部分响应,基本上包含 2 个部分:XML 和附加的二进制文件(例如图像)。 顺序如下:

  • 服务公开为 HTTP GET 请求
  • 我们首先调用一个返回二进制文件的端点
  • 我们创建一个描述二进制文件的 XML
  • 我们将这 2 个元素混合在一起并提供多部​​分响应 (XML + 二进制文件)

经过几次尝试并在示例和论坛上环顾四周后,我找不到解决这个特殊情况的方法。 我已经成功地调用了端点。我可以在调试日志中看到响应在soap 内部消息中以二进制形式传输。 我怀疑我需要使用 MultipartFormDataFormatter。据我了解格式化程序的代码,它需要内部soap消息正文的所有子节点逐个创建一个部分。

所以我尝试将我的 XML 内容附加为二进制节点的兄弟节点(消息在日志中看起来与预期的一样),并强制 ContentType 使用:

<property name="messageType" value="multipart/form-data" scope="axis2"/>
<property name="ContentType" value="multipart/form-data" scope="axis2"/>

确保调用正确的格式化程序。

不幸的是,这似乎不起作用,响应确实在 multipart/form-data 中,但数据为零。

有什么帮助吗?

谢谢 亚尼克

【问题讨论】:

    标签: wso2 wso2esb


    【解决方案1】:

    您需要在axis2.xml 文件中启用二进制中继构建器以使用multipart/form-data 消息格式。

        <messageBuilder contentType="multipart/form-data"
                        class="org.wso2.carbon.relay.BinaryRelayBuilder"/>
    
    
        <messageFormatter contentType="multipart/form-data"
                        class="org.wso2.carbon.relay.ExpandingMessageFormatter"/>
    

    【讨论】:

      【解决方案2】:

      感谢您的回答。

      我已经通过启用二进制中继构建器进行了几次测试,但我没有得到我期望的确切的多部分响应。

      所以,我终于创建了自己的格式化程序。它从 body 子节点构造多部分响应,并查找一些特定属性来指定标头信息,例如部分内容 id、传输编码和内容类型。

      【讨论】:

        【解决方案3】:

        也许这对其他人有用:

        您可以通过取消注释 /repository/conf/axis2/axis2.xml 文件中的以下属性来设置多部分构建器

        <messageBuilder contentType="multipart/related" class="org.wso2.carbon.relay.BinaryRelayBuilder"/>
        

        根据我们的理解要求,这里是使用从不同端点接收的 xml 内容和 png 附件制作单个响应消息。

        为了实现您的目标,我们可以使用自定义中介。通过使用自定义类中介,您可以使用 xml 元数据和 png 图像构建响应。

        编写一个 java 类来构建包含两个响应的消息可能是在 WSO2 中实现此目的的最佳方法。您可以使用消息构建器和 crate 消息方法以您想要的方式创建消息。并且你可以使用类中介,可以在this documentation 中找到它与 ESB 一起使用

        作为进一步的说明,请注意enrich mediator 附加给定的资源。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-28
          • 1970-01-01
          • 2017-12-17
          相关资源
          最近更新 更多