如何从应用程序获取 json 到我的 mule 应用程序

how to get json from an application to my mule application

我想 link 两个应用程序与我的 mule 应用程序。因此它必须从第一个应用程序(消息、令牌)获取信息,并添加另一个信息(电子邮件)并将所有这些信息重播到第二个应用程序。 这是我的代码:

<db:mysql-config name="MySQL_Configuration" host="localhost" port="3306" user="root" database="mulesoft" doc:name="MySQL Configuration"/>
    <smtp:gmail-connector name="Gmail" validateConnections="true" doc:name="Gmail"/>
<flow name="flows1Flow1">

    <http:inbound-endpoint host="localhost" port="8084"  encoding="UTF-8" doc:name="HTTP"/>
        <json:json-to-object-transformer returnClass="java.lang.Object" doc:name="JSON to Object"/>
        <set-variable variableName="msg" value="#[message.payload.msg]" doc:name="Variable"/>
        <set-variable variableName="tkn" value="#[message.payload.tkn]" doc:name="Variable"/>
        <db:select config-ref="MySQL_Configuration" doc:name="Database">
            <db:parameterized-query><![CDATA[select * from push where token = #[message.payload['token']]]]></db:parameterized-query>
        </db:select>
        <foreach doc:name="For Each">
            <set-session-variable variableName="email" value="#[message.payload.email]" doc:name="Session Variable"/>
            <json:object-to-json-transformer doc:name="Object to JSON"/>
            <http:outbound-endpoint exchange-pattern="request-response" method="POST" address="http://slice.WS.com/api.php/push/send_test_push" contentType="application/json" doc:name="HTTP"/>
        </foreach>

</flow>

当我用邮递员(google chrome 扩展名)发布 json 信息进行测试时,我得到了这个结果:

  1. 怎么了?
  2. 如何从 json 格式的第二个应用程序(Web 服务)恢复响应?
    提前谢谢你。

您没有构建可以通过 HTTP 正确序列化的特定响应对象,因此 Mule 使用流的最新消息处理器生成的内容作为响应。

在你的例子中,for-each 生成一个 List 对象,Mule 尽职尽责地将其序列化为 HTTP 响应。

您需要添加一个 http:response-builder 元素和一个 set-payload 消息处理器来创建对入站端点的调用者有意义的 HTTP 响应。

示例:

<set-payload value="OK"/>
<http:response-builder status="200" contentType="text/plain" />

参考:http://www.mulesoft.org/documentation/display/current/HTTP+Response+Builder