如何将附加数据添加到mule有效负载?

时间:2012-02-06 02:41:26

标签: http mule

我正在尝试将一些额外的静态数据添加到入站http消息(作为URL参数接收)有效负载,然后再将其提交到基于出站http表单的端点。我的mule配置如下:

<flow name="login" doc:name="login">
    <http:inbound-endpoint exchange-pattern="request-response" address="http://localhost:8081/login" doc:name="Login"/>

    <http:body-to-parameter-map-transformer doc:name="Body to Parameter Map"/>  

    <http:outbound-endpoint address="http://localhost:8090/mayapp/Main/login.do"
            method="POST" contentType="application/x-www-form-urlencoded" exchange-pattern="request-response">
    </http:outbound-endpoint>
</flow>

以上将URL参数转换为http表单POST(名称/值对)非常好。我现在需要的是能够为POST(ed)数据添加新的名称 - 值对吗?我发布的表单需要一些静态数据(作为隐藏的HTML字段发布),我希望将其作为转换过程的一部分来处理。

我已成功使用自定义组件完成此操作。我想知道是否有一种更简单的方法来处理这个使用Mule的本地变换器/消息处理器!

2 个答案:

答案 0 :(得分:5)

首先,我会使用变换器而不是组件,因为它实际上是对有效载荷数据进行的转换。

第二,我想不到另一个变换器而不是Groovy变换器来修改由body-to-parameter-map-transformer创建的Map有效负载。类似的东西:

<script:transformer>
    <script:script engine="groovy">
        <script:text>
            payload['newKey'] = 'newValue'
        </script:text>
    </script:script>
</script:transformer>

答案 1 :(得分:0)

您也可以使用表达式组件:

<expression-component doc:name="change_payload">
   <![CDATA[#[ message.payload = 'foo';]]]>
</expression-component>