wso2esb payloadfactory构建JSON消息

时间:2013-09-13 13:37:11

标签: json rest wso2esb mediator

我正在尝试使用wso2esb 4.7.0 REST API来实现以下用例:

公开REST资源,当您执行GET请求时,它会构建JSON消息并向后端服务发出POST请求,并接收将返回给客户端的JSON响应。

我在构建JSON消息时遇到问题。我正在使用payloadfactory介体来构建我的JSON请求,但我只在后端服务上收到一条空的soap消息。

以下是我正在使用的REST API源配置:

<api xmlns="http://ws.apache.org/ns/synapse" name="test" context="/test">
 <resource methods="GET" uri-template="/test">
  <inSequence>
     <payloadFactory media-type="json">
        <format>{"request": "Hello JSON!"}</format>
        <args/>
     </payloadFactory>
     <property name="Content-Type" value="application/json" scope="transport" type="STRING"/>
     <send>
        <endpoint name="HTTPEndpoint">
           <http method="POST" uri-template="http://localhost:8080"/>
        </endpoint>
     </send>
     <log level="full"/>
  </inSequence>
  <outSequence>
     <send/>
  </outSequence>
 </resource>
</api>

1 个答案:

答案 0 :(得分:0)

您必须在发送中介之前设置“messageType”属性,如下所示。

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

因此,您的配置应更改如下。

<api xmlns="http://ws.apache.org/ns/synapse" name="test" context="/test">
 <resource methods="GET" uri-template="/test">
    <inSequence>
     <payloadFactory media-type="json">
          <format>{"request": "Hello JSON!"}</format>
        <args/>
     </payloadFactory>
     <property name="messageType" value="application/json" scope="axis2"/>
     <send>
      <endpoint name="HTTPEndpoint">
       <http method="POST" uri-template="http://localhost:8080"/>
      </endpoint>
    </send>
   <log level="full"/>
  </inSequence>
  <outSequence>
   <send/>
  </outSequence>
 </resource>
</api>