我有一个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>
答案 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响应。