我想用我的mule应用程序链接两个应用程序。所以它必须从第一个(msg,令牌)获取信息,并添加另一个信息(电子邮件)并将所有这些信息重播到第二个应用程序。 这是我的代码:
<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>
当我使用邮递员(谷歌浏览器扩展程序)发布json信息进行测试时,我得到以下结果:
答案 0 :(得分:0)
您没有构建可以通过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