0

我有一个代理,它接受传入的 XML 并在其上执行 xslt 转换以获得所需的 xml 格式。然后它应该作为 JSON 发送到服务,所以我将 messageType 设置为 application/json 但是它以 XML 的形式到达。

<proxy xmlns="http://ws.apache.org/ns/synapse" name="XSLTTRANSPROXY_BRYN" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <inSequence>
         <xslt key="gov:/Complete.xsl">
            <property xmlns:ns="http://org.apache.synapse/xsd" name="GUID" expression="fn:substring-after(get-property('MessageID'), 'urn:uuid:')"/>
         </xslt>
        <property name="messageType" value="application/json" scope="axis2"/>
         <log level="full"/>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
      <endpoint>
         <address uri="http://localhost:54150/"/>
      </endpoint>
   </target>
   <description></description>
</proxy>

我已经在axis2.xml 文件中尝试了各种类型的构建器,但似乎都没有改变结果。当前运行 WSO2 ESB 4.6.0

4

3 回答 3

3

你的代码应该是这样的:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="XSLTTRANSPROXY_BRYN" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <inSequence>
         <xslt key="gov:/Complete.xsl">
            <property xmlns:ns="http://org.apache.synapse/xsd" name="GUID" expression="fn:substring-after(get-property('MessageID'), 'urn:uuid:')"/>
         </xslt>
        <property name="messageType" value="application/json" scope="axis2"/>
         <log level="full"/>
<send>
<endpoint>
         <address uri="http://localhost:54150/"/>
      </endpoint>
</send>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
         </target>
   <description></description>
</proxy>

并且您需要启用本文档中提到的标签:- http://docs.wso2.org/wiki/display/ESB403/ESB+and+JSON。如果您没有在 json 中获取数据,请尝试在其他浏览器中使用该服务

于 2013-07-24T08:04:32.767 回答
1

您的代理应该可以正常工作。当我们设置时,

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

消息将通过消息格式化程序转换为 json。所以如果我们在发送之前登录,它仍然是 xml 格式。您可以使用 tcpmon 之类的工具查看转换后的消息。

我测试了以下示例,指向 tcpmon。

<proxy name="TestProxy"
          transports="https http"
          startOnLoad="true"
          trace="disable">
      <description/>
      <target>
         <endpoint>
            <address uri="http://localhost:8888/"/>
         </endpoint>
         <inSequence>
            <property name="messageType" value="application/json" scope="axis2"/>
            <log level="full"/>
         </inSequence>
         <outSequence>
            <send/>
         </outSequence>
      </target>
   </proxy>
于 2013-07-24T06:45:42.253 回答
0

请按照以下链接 http://docs.wso2.org/wiki/display/ESB403/ESB+and+JSON上的说明进行操作

于 2013-07-24T05:20:52.090 回答