在Mulesoft HTTP请求中发送动态查询参数

时间:2018-10-07 08:13:17

标签: mule-esb

我有一个要求,当我在mulesoft中将动态查询参数发送为http请求时,必须按需发送动态查询参数。

我正在写一个表达式来处理这种情况

类似这样的

if(message.inboundProperties.'http.query.params'.param1!= null)

flowVars.params.put(“ param1”,message.inboundProperties.'http.query.params'.param1);

if(message.inboundProperties.'http.query.params'.param2!= null)

flowVars.params.put(“ param2”,message.inboundProperties.'http.query.params'.param2);

if(message.inboundProperties.'http.query.params'.param3!= null)

flowVars.params.put(“ param3”,message.inboundProperties.'http.query.params'.param3);

//如果是强制性的

flowVars.params.put(“ api_key”,flowVars.apikey);

创建哈希表,但表达式本身失败

有人可以帮我吗

任何线索都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要在变量中设置初始的java.util.HashMap。尝试这样的事情:

<set-variable variableName="params" value="#[new java.util.HashMap()]" mimeType="application/java" doc:name="Set params"/>
 <expression-component doc:name="Expression"><![CDATA[if(message.inboundProperties.'http.query.params'.param1 != null)
    flowVars.params.put("param1", message.inboundProperties.'http.query.params'.param1);
]]></expression-component>
        <http:request config-ref="HTTP_Request_Configuration" path="/yourPath" method="{METHOD}" doc:name="HTTP {METHOD}">
            <http:request-builder>
                <http:query-params expression="#[flowVars.params]"/>
                <http:header headerName="${header.correlationid}" value="#[sessionVars.correlationId]"/>
            </http:request-builder>
        </http:request>