首页 > 解决方案 > 如何将 text/xml 响应转换为 application/json wso2 EI

问题描述

我有一个肥皂服务,我需要将此服务公开为 Wso2 EI 中的休息 api,内容类型是 text/xml,我尝试过

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

最后,但它不会将我的响应转换为 json。你能帮我看看怎么做吗?

我试过这个,

    <resource methods="POST">
      <inSequence>
         <send>
            <endpoint>
               <address uri="http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <property name="messageType" value="application/json" scope="axis2"/>
         <send/>
      </outSequence>
   </resource>

标签: restsoapwso2wso2esbwso2ei

解决方案


这样做的原因是 WSO2 EI 或 ESB 的开发方式是默认使用 SOAP 响应响应 SOAP 请求。当您使用 SOAPAction 和 Content-Type: text/xml 调用 PROXY 或 API 时,EI 将其理解为 SOAP 请求,它会以 SOAP 响应进行响应。

因此,如果客户端请求在 SOAP-1.1 中,EI 将使用 SOAP-1.1 响应进行响应,或者如果客户端请求在 SOAP-1.2 中,EI 将使用 SOAP-1.2 进行响应。

为了绕过这种行为,他们提供了一个额外的属性,如下所示。

<property name="IsClientDoingREST" scope="default" type="BOOLEAN" value="true"/>

因此,在响应客户端之前,应如下设置属性以获得响应 JSON 的预期行为。

<property name="IsClientDoingREST" scope="default" type="BOOLEAN" value="true"/>
<property name="messageType" scope="axis2" value="application/json"/>

这种方法将帮助您从 SOAP 请求中获取 JSON 响应。


推荐阅读