【问题标题】:MULE ESB send post with parameters from previous componentMULE ESB 发送带有来自前一个组件的参数的帖子
【发布时间】:2014-04-09 13:55:08
【问题描述】:

首先我想给你看代码:

    <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,但我不知道如何在最后通过 post 传递它们。

我想将它们发布到外部位置,例如:

www.foo.com/getParams?value1=getParam1()&value2=getParam2()

我可以使用 java spring RestTemplates 来做到这一点,但这不是我想要充分使用 mule 的最佳选择。有什么想法可以通过这些参数吗?

【问题讨论】:

    标签: java rest post mule


    【解决方案1】:

    很难理解您的问题,因为您正在谈论 POST 并且有一个 GET 示例。

    在流程结束时,消息有效负载是一个数组,其中包含您使用 getParam1() 和 getParam2() 设置的任何表达式组件。如果您希望这些参数进入所描述的 url,您可以在 http 出站中使用 address="http://www.foo.com/getParams?value1=#[payload[0]]&amp;amp;value2=#[payload[1]]" 进行设置。

    如果您删除您的 Args2SOAP 表达式组件,您可以直接使用address="http://www.foo.com/getParams?value1=#[payload.getParam1()]&amp;amp;value2=#[payload.getParam2()]"

    如果您真的想使用 http POST,那么在 http 出站之前设置为有效负载的任何内容都将作为 POST 数据发送。

    【讨论】:

      猜你喜欢
      • 2012-09-18
      • 2014-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多