2012-02-06 76 views
2

我試圖添加一些額外的靜態數據到入站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(編輯)數據添加新的名稱/值對?我發佈的表單需要一些靜態數據(發佈爲隱藏的HTML字段),我希望將其作爲轉換過程的一部分來處理。

我已經設法使用自定義組件完成此操作。我想知道是否有更簡單的方法來處理這個使用Mule的本地變壓器/消息處理器!

回答

4

首先我會使用一個轉換器而不是一個組件,因爲它實際上是一個轉換你正在做的有效載荷數據。

第二我不能想到另一個轉換器,而不是Groovy轉換器來修改由body-to-parameter-map-transformer創建的Map有效載荷。喜歡的東西:

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

感謝您的解決方案。這工作。 – groovenarula 2012-02-27 10:11:53

+0

如何編寫自己的AbstractMessageTransformer? 那個可以訪問http請求參數並修改你的有效載荷(或者做什麼......) – 2014-01-24 09:54:40

+0

當然,如果你更喜歡編譯你的擴展。否則,腳本化變換器,或者自Mule 3.3,基於MEL的表達式轉換器都可以訪問HTTP請求參數並修改有效負載。 – 2014-01-24 16:24:43

0

您可以使用表達式組分以及:

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