我正在尝试熟悉WSO2 ESB 4.7.0。作为简单的测试,我想使用代理服务将JSON转换为XML。现在我已经理解ESB隐式地将JSON转换为XML。我创建了一个简单的中介,目标是将转换后的XML消息写入文件。不幸的是,JSON到XML转换的结果是空的(文件中没有数据)。我是否理解WSO2的JSON功能有什么问题,或者我的调解有什么问题?
我的调解:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="MockJsonTest" transports="http https" startOnLoad="true" trace="disable">
<target>
<inSequence>
<property name="messageType" value="text/xml" scope="axis2" type="STRING"/>
<property name="ContentType" value="text/xml" scope="axis2" type="STRING"/>
<log level="full"/>
<property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
<property name="transport.vfs.ReplyFileName" value="filename.xml" scope="transport" type="STRING"/>
<send>
<endpoint>
<address uri="vfs:file:///C:/wso2">
<timeout>
<duration>0</duration>
<responseAction>discard</responseAction>
</timeout>
</address>
</endpoint>
</send>
</inSequence>
<outSequence/>
<faultSequence/>
</target>
我的curl客户端发布了JSON数据:
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"kind":"plus#person"}' http://mycomputer:8280/services/MockJsonTest
在axis2.xml中,我尝试过两种JSON格式化程序:
<!--messageFormatter contentType="application/json"
class="org.apache.axis2.json.JSONMessageFormatter"/-->
<messageFormatter contentType="application/json"
class="org.apache.axis2.json.JSONStreamFormatter"/>
亲切的问候,
的Heiko
答案 0 :(得分:1)
我测试了你的场景,我得到了正确的输出,如下所示。
<kind>plus#person</kind>
以下是我的代理服务。
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="MockJsonTest"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<property name="messageType" value="text/xml" scope="axis2" type="STRING"/>
<property name="ContentType" value="text/xml" scope="axis2" type="STRING"/>
<log level="full"/>
<property name="OUT_ONLY" value="true" scope="default" type="STRING"/>
<property name="transport.vfs.ReplyFileName"
value="filename.xml"
scope="transport"
type="STRING"/>
<send>
<endpoint>
<address uri="vfs:file:///home/user/test">
<timeout>
<duration>30000</duration>
<responseAction>discard</responseAction>
</timeout>
</address>
</endpoint>
</send>
</inSequence>
</target>
<description/>
</proxy>
您的代理服务中似乎存在一些小的xml格式错误。将其与上述进行比较。在源视图中指定代理时,请始终单击末尾的“切换到设计视图”。然后,如果有任何格式错误,它会提醒您。
我使用了你提供的相同curl命令。我在axis2.xml中有ESB 4.7.0的默认JSON消息格式化程序和构建器,如下所示。
<!--JSONBuilder Message Formatters-->
<messageFormatter contentType="application/json"
class="org.apache.axis2.json.JSONMessageFormatter"/>
<!--messageFormatter contentType="application/json"
class="org.apache.axis2.json.JSONStreamFormatter"/-->
<messageFormatter contentType="application/json/badgerfish"
class="org.apache.axis2.json.JSONBadgerfishMessageFormatter"/>
<messageFormatter contentType="text/javascript"
class="org.apache.axis2.json.JSONMessageFormatter"/>