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

发布于 2025-01-02 22:50:00 字数 826 浏览 1 评论 0原文

我正在尝试将一些额外的静态数据添加到入站 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 的本地转换器/消息处理器来处理这个问题!

I'm trying to add some additional static data to an inbound http message (received as URL parameters) payload before submitting it to an outbound http form based endpoint. My mule config is as follows :

<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>

The above transforms the URL parameters to a http form POST (name/values pairs) very nicely. What I need now is the ability to add new name-value pairs to the POST(ed) data ? The form I'm posting to expects some static data (posted as hidden HTML fields) that I would like to handle as part of the transformation process.

I've managed to accomplish this using a custom component. I'm wondering if there's an easier way to handle this using Mule's native transformers / message processors !

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

知足的幸福 2025-01-09 22:50:00

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

其次,我想不出除 Groovy 之外的另一种转换器来修改由主体到参数映射转换器创建的映射有效负载。像这样的东西:

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

First I would use a transformer and not a component for this, as it is really a transformation you're doing on the payload data.

Second I can't think of another transformer than the Groovy one to modify the Map payload created by the body-to-parameter-map-transformer. Something like:

<script:transformer>
    <script:script engine="groovy">
        <script:text>
            payload['newKey'] = 'newValue'
        </script:text>
    </script:script>
</script:transformer>
揽清风入怀 2025-01-09 22:50:00

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

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

You can use an expression-component as well:

<expression-component doc:name="change_payload">
   <![CDATA[#[ message.payload = 'foo';]]]>
</expression-component>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文