我在ESB 4.8.1中定义了一个代理服务,它只能膨胀,返回xml。现在我想要JSON。看起来很简单。我只是添加
<property name="messageType" value="application/json" scope="axis2"/>
到我的inSequence。以某种方式工作。我得到不同的输出。实际上是JSON,但是base64编码的JSON。我更喜欢文字,至少在目前,因为它更容易看到发生了什么。
我有另一个问题。当我解码输出时,我得到了这个:
{"Fault":{"faultcode":"axis2ns6:Client","faultstring":"The endpoint reference (EPR) for the Operation not found is /services/profiles and the WSA Action = null. If this EPR was previously reachable, pl\
ease contact the server administrator.","detail":""}}
如果删除messageType =“application / json”属性,我会得到正确/正确的xml响应。想法?
这是我的代理服务定义:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="getaccount2"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<log level="full"/>
<property name="messageType" value="application/json" scope="axis2"/>
</inSequence>
<outSequence>
<log level="full"/>
<send/>
</outSequence>
<endpoint>
<address uri="http://10.2.8.1:9763/services/profiles"/>
</endpoint>
</target>
<publishWSDL uri="http://10.2.8.1:9763/services/profiles?wsdl2"/>
<description/>
</proxy>
答案 0 :(得分:2)
您在inSequence中定义<property name="messageType" value="application/json" scope="axis2"/>
,这意味着您在http://10.2.8.1:9763/services/profiles
监听的服务会收到带有json有效负载的请求:但是在您的代理def中,我们可以看到它是等待的Web服务用于SOAP请求。
如果要在代理中转换json中的SOAP响应,则必须移动&#39; messageType&#39; outSequence中的属性定义,在发送中介之前。