【问题标题】:WSO2 API Manager is not responding to a request that returns zip file (application/octet-stream)WSO2 API 管理器没有响应返回 zip 文件的请求(应用程序/八位字节流)
【发布时间】:2013-07-03 18:42:07
【问题描述】:

使用 WSO2 API 管理器 1.3.1。尝试使用 API Manager 代理到 REST 服务。我已经在 API Mgr 中设置了服务,并且可以成功发布和获取响应,通常是 json,虽然有些是文本。

但是,当我尝试获取返回二进制内容的资源(zip“文件”,内容类型:应用程序/八位字节流)时,API 管理器似乎没有响应,并且我可以在控制台窗口(我在控制台中运行 wso2server.bat):

[2013-07-03 11:52:05,048] 警告 - SourceHandler 连接超时 写响应时:173.21.1.22:1268->173.21.1.22:8280

我的内部服务上有一个 HTTPModule,它似乎正在响应适当的内容(我可以看到记录的 GET 和响应数据)。我也可以直接调用内部服务并得到响应,这样事情就结束了。但是通过 API Manager 似乎失败了。

我找到了有关启用其他内容类型的信息:

WSO2 API Manager - Publishing API with non-XML response

http://wso2.com/library/articles/binary-relay-efficient-way-pass-both-xml-non-xml-content-through-apache-synapse

使用该信息,我尝试使用二进制中继启用 messageFormatter 和 messageBuilder 的应用程序/八位字节流,但它没有帮助(或似乎有所作为)。我什至禁用了所有其他内容类型并将二进制中继用于所有内容类型,但它没有帮助。

目前,我在axis2.xml 和axis2_client.xml(在它们的相应部分)中只使用以下内容:

<messageBuilder contentType=".*" class="org.wso2.carbon.relay.BinaryRelayBuilder"/
<messageFormatter contentType=".*" class="org.wso2.carbon.relay.ExpandingMessageFormatter"/>

我仍然收到我的 json 和文本响应,但 WSO2 超时获取 zip 内容。我在axis2.xml中看到了关于启用“。*”中继的JIRA,但由于其他请求似乎有效,我不确定这对我来说是个问题。我确实尝试添加 'format="rest"' 到 API 定义,但它似乎破坏了所有操作,甚至是之前有效的操作,所以我把它拉回来了。

任何关于正在发生的事情或如何挖掘和调试它的想法都会有所帮助。谢谢!

【问题讨论】:

    标签: api rest wso2


    【解决方案1】:

    在使用了太久之后,事实证明我的 WSO2 配置是正确的,使用了 Message Relay 和 BinaryRelayBuilder 等。虽然我的 REST 服务可以立即回复,但我设置了一个我认为 WSO2 的 HTTP 标头不喜欢,因为当我删除它时,WSO2 会以预期的速度回复(立即)。 我正在设置标题:

    传输编码:二进制

    当我从我的服务回复中删除该标头时,WSO2 按预期运行。我不知道这是否是 WSO2 中的“错误”,或者我是否实施不正确,但我确实有一个“解决方法”,即从我的服务响应中省略该标头。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-17
      • 2018-08-16
      • 1970-01-01
      • 2022-10-11
      • 2017-10-21
      • 1970-01-01
      • 2013-02-07
      • 2019-11-03
      相关资源
      最近更新 更多