【问题标题】:WSO2 REST proxy answer back with SOAP instead of RESTWSO2 REST 代理使用 SOAP 而不是 REST 回复
【发布时间】:2016-10-28 07:46:13
【问题描述】:

最近我遇到了无法解决的 wso2 esb 问题(可能是错误)。我会尽量解释清楚。

我将 wso2 ESB 与休息代理一起使用,以便从前端应用程序与后端休息服务进行通信。

我用这样的端点定义了一个休息代理,它工作正常:

<endpoint>
         <address uri="http://127.0.0.1:8099/DummyRestServiceWSO2"/>
</endpoint>

但我们的目标是将 WSO2 esb 集成到 openshift 环境中的容器中。在 openshift 中,ip 是动态设置的,但可以通过系统环境变量访问。所以我尝试通过使用标题标签动态解决我的端点:

<endpoint>
         <default/>
</endpoint>
<inSequence>
<script language="js">mc.setProperty("url",java.lang.System.getenv("HOST_IP"));</script>
<property name="service_url" expression="fn:concat(get-property(url),'/DummyRestServiceWSO2')"/>
<header name="To" expression="get-property('service_ep')"/>
<send/>
</inSequence>

其中HOST_IP定义为:http://127.0.0.1:8099

自从我进行此更改后,我对后端休息服务的调用仍然可以正常工作,但对调用者(前端)的响应现在被格式化为肥皂(我试图画出问题,see attachment)。

非常感谢您的帮助,祝阅读这篇文章的人度过美好的一天:)

【问题讨论】:

    标签: rest soap wso2 esb


    【解决方案1】:

    如果“REST”是指“JSON”格式,只需在将响应发送回客户端之前定义此属性即可:

    <property name="messageType" value="application/json" scope="axis2"/>
    

    对纯 xml 使用 application/xml(无 SOAP 信封/正文)

    您也可以在发送中介中使用默认端点并定义格式:

    <send>
      <endpoint>
        <default format="rest">
          <timeout>
            <responseAction>fault</responseAction>
          </timeout>
        </default>
      </endpoint>
    </send>
    

    【讨论】:

    • 感谢您的意见。实际上它并没有帮助,但我可以找到解决问题的方法:标签 需要删除标签标题之后的标签然后它可以工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多