如何将text / xml响应转换为application / json wso2 EI

时间:2019-06-20 03:16:54

标签: rest soap wso2 wso2esb wso2ei

我有一个soap服务,我需要将此服务作为Wso2 EI中的rest 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>

2 个答案:

答案 0 :(得分:1)

它应该工作完美。下面提供了一个示例REST API配置。

<api xmlns="http://ws.apache.org/ns/synapse" name="CheckREST" context="/samplerest">
   <resource methods="GET">
      <inSequence>
         <send>
            <endpoint>
               <http uri-template="http://localhost:8280/services/sampleSOAPproxy"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <property name="messageType" value="application/json" scope="axis2" type="STRING"/>
         <send/>
      </outSequence>
   </resource>
</api>

如果不起作用,请提及您使用的EI版本。

答案 1 :(得分:1)

这样做的原因是,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进行响应。

要绕过此行为,他们提供了以下附加属性。

function testOne () {
  console.log("Detroit");
  alert("Detroit");
  print("Detroit");
}

因此,在响应客户端之前,应按如下所示设置属性,以获取使用JSON响应的预期行为。

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

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