使用WSO2 API Manager 1.3.1。尝试使用API Manager代理REST服务。我已经在API Mgr中设置了服务,并且可以成功发布和获取响应,通常是json,尽管有些是文本。
但是,当我尝试获取返回二进制内容的资源(zip“文件”,content-type:application / octet-stream)时,API管理器似乎没有响应,我可以看到错误控制台窗口(我在控制台中运行wso2server.bat):
[2013-07-03 11:52:05,048]警告 - SourceHandler连接超时 在写回复时:173.21.1.22:1268-> 173.21.1.22:8280
我的内部服务上有一个HTTPModule,它似乎正在响应相应的内容(我可以看到记录的GET和响应数据)。我也可以直接调用内部服务并获得响应,这样事情就好了。但是通过API管理器似乎失败了。
我找到了有关启用其他内容类型的信息:
WSO2 API Manager - Publishing API with non-XML response
使用该信息我尝试使用二进制中继为messageFormatter和messageBuilder启用application / octet-stream,但它没有帮助(或者似乎有所作为)。我甚至禁用了所有其他内容类型,并对所有内容类型使用二进制中继,但它没有帮助。
目前,我在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定义,但它似乎打破了所有操作,即使是那些先前工作的操作,所以我把它拉回来了。
有关正在发生的事情或如何深入挖掘和调试此问题的任何想法都会有所帮助。谢谢!
答案 0 :(得分:0)
使用了这个太长时间后,事实证明我的WSO2配置是正确的,使用Message Relay和BinaryRelayBuilder等。虽然我的REST服务可以立即回复,但我设置了一个HTTP头,我假设WSO2做了不喜欢,因为当我删除它时,WSO2将以预期的速率(立即)回复。 我正在设置标题:
转移编码:二进制
当我从服务回复中删除该标题时,WSO2按预期运行。我不知道这是否是WSO2中的“错误”,或者我是否实现错误,但我通过省略服务响应中的标题确实看起来像是一种“解决方法”。