【问题标题】:Binary-Relay don't expand SOAP message in wso2 EI and wso2 API ManagerBinary-Relay 不在 wso2 EI 和 wso2 API 管理器中扩展 SOAP 消息
【发布时间】:2017-11-06 11:25:38
【问题描述】:

我们正在使用 wso2 api manager (2.1.0) 来管理我们的 SOAP api。 我们的 Web 服务的响应消息具有内容类型“应用程序/一角钱”。 我们将 axis2.xml 更改为使用具有该内容类型的二进制中继(构建器和格式化程序)。

<messageFormatter contentType="application/dime"                          
   class="org.wso2.carbon.relay.ExpandingMessageFormatter"/>

<messageBuilder contentType="application/dime"
   class="org.wso2.carbon.relay.BinaryRelayBuilder"/>

响应 SOAP 消息没有展开,所以我们有一个这样的返回信封

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
    <ns:binary xmlns:ns="http://ws.apache.org/commons/ns/payload">DCAAAAApACkAAAJxdXVpZDo3MTRDNk...U9GCgA=</ns:binary>
</soapenv:Body>
</soapenv:Envelope> 

我们在 wso2 企业集成器 (6.1.1) 中看到了相同的行为。

是否需要进行任何配置才能在 api 管理器或企业集成器中扩展响应 SOAP 消息? 我们可以做点别的吗?

【问题讨论】:

    标签: wso2 wso2esb wso2-am wso2carbon api-manager


    【解决方案1】:

    可能API Manager中的Content-Type没有保留,看这个:WSO2 api manager not propagating content type header for multipart form data你可以设置属性http.headers.preserve来保留Content-Type。

    【讨论】:

      【解决方案2】:

      APIM 在这种情况下按预期工作。您已经为您的内容类型设置了二进制格式化程序。因此 APIM、ESB 将您的有效负载视为二进制内容,并在肥皂信封内传递相同的二进制内容。

      您需要为您的内容类型“application/dime”定义正确的格式化程序和构建器。有关消息生成器和格式化程序如何工作的信息,请参阅 [1]。为您的类型确定正确的格式化程序和生成器。

      [1] - https://docs.wso2.com/display/ESB500/Working+with+Message+Builders+and+Formatters

      【讨论】:

      • 我用 WSO2 ESB 5.0.0.0 尝试了相同的配置,一切正常。 SOAP 信封已从二进制字段扩展。似乎 ESB 5.0.0 和 EI 6.1.1(以及 APIM 2.1.0)之间的行为发生了变化,正如我所说,对于最新的产品,SOAP 信封没有扩展,并且包含转换为 SOAP 信封的二进制字段二进制,返回。
      • 我用 WSO2 API Manager 2.0.0 尝试了相同的配置,它可以工作。似乎问题仅限于 API manager 和 Enterprise Integrator 的最新版本。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-27
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多