使用 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 - 使用非 XML 响应发布 API
使用该信息,我尝试使用二进制中继启用 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 定义中,但它似乎破坏了所有操作,即使是之前有效的操作,所以我将其拉回。
任何关于正在发生的事情或如何挖掘和调试的想法都会有所帮助。谢谢!