首先,我想向您展示代码:
<flow name="SetParamFlow" doc:name="SetParamFlow">
<http:inbound-endpoint exchange-pattern="request-response"
host="localhost" port="8081" path="setParamFlow" doc:name="HTTP" />
<response>
<http:response-builder status="200"
doc:name="HTTP Response Builder" contentType="application/json">
<http:cache-control noCache="true" />
</http:response-builder>
</response>
<json:json-to-object-transformer
returnClass="com.integration.SetParamWrapper"
doc:name="JSON to Object" />
<expression-component doc:name="Args2SOAP">
<![CDATA[
import java.util.HashMap;
payload = {
payload.getParam1(),
payload.getParam2()
};
]]>
</expression-component>
<response>
<json:object-to-json-transformer
doc:name="Object to JSON" />
</response>
<response>
<expression-component doc:name="Simplify">
<![CDATA[
payload = ['param1': payload.getParam1(), 'exception': payload.exception.getValue()];
]]>
</expression-component>
<logger message="Simplified result: #[message.payload]" level="INFO" doc:name="Simplified result"/>
</response>
<logger message="Setting params : #[message.payload]" level="INFO" doc:name="Setting params"/>
</flow>
这是我学习骡子系统的一部分,因为你可以看到我得到Param1和Param2,但我不知道如何在最后通过帖子传递它们。
我想将它们发布到外部位置,例如:
www.foo.com/getParams?value1=getParam1()及VALUE2 = getParam2()
我可以用java spring RestTemplates做到这一点,但这不是我想要完全使用mule的最佳选择。任何想法如何通过这些参数?
答案 0 :(得分:1)
很难理解你的问题,因为你正在谈论POST,并有一个GET的例子。
在流程结束时,消息有效负载是一个数组,其中包含使用getParam1()和getParam2()设置的表达式组件。如果您希望这些参数进入所描述的网址,您可以使用address="http://www.foo.com/getParams?value1=#[payload[0]]&value2=#[payload[1]]"
在http出站中设置该参数。
如果删除了Args2SOAP表达式组件,则可以直接使用address="http://www.foo.com/getParams?value1=#[payload.getParam1()]&value2=#[payload.getParam2()]"
。
如果您确实想要使用http POST,那么无论您在http出站之前设置为有效负载,都将作为POST数据发送。