【发布时间】: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
使用该信息,我尝试使用二进制中继启用 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 定义,但它似乎破坏了所有操作,甚至是之前有效的操作,所以我把它拉回来了。
任何关于正在发生的事情或如何挖掘和调试它的想法都会有所帮助。谢谢!
【问题讨论】: