我有一个要求,当我在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);
创建哈希表,但表达式本身失败
有人可以帮我吗
任何线索都将不胜感激。
答案 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>