如何在Mule的http请求连接器中动态设置完整url

如何在Mule的http请求连接器中动态设置完整url,http,mule,hateoas,Http,Mule,Hateoas,如中所示,当使用mule请求http端点时,可以在变量中包含url的一部分 但我有一个完整的url,从支持hateoas的端点返回。是否可以对请求使用此完整url而不将其拆分为几个部分(主机、端口、路径) 对于完整url,我的意思是“而不是host=“example.com”、port=“80”、path=“/a/specific/path”一种简单的方法是将url拆分为多个部分,并将其设置为流变量。然后你可以在任何你想要的地方使用这个流变量 下面是一个简单的示例:- <http:lis

如中所示,当使用mule请求http端点时,可以在变量中包含url的一部分

但我有一个完整的url,从支持hateoas的端点返回。是否可以对请求使用此完整url而不将其拆分为几个部分(主机、端口、路径)


对于完整url,我的意思是“而不是host=“example.com”、port=“80”、path=“/a/specific/path”

一种简单的方法是将url拆分为多个部分,并将其设置为流变量。然后你可以在任何你想要的地方使用这个流变量

下面是一个简单的示例:-

 <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
    <flow name="csv-to-smtpFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/aa" doc:name="HTTP"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
        <set-payload value="http://example.com:80/a/specific/path" doc:name="Set Payload"/>
        <set-variable variableName="url" value="#[new URL(payload);]" doc:name="Variable"/>
        <set-variable variableName="protocol" value="#[url.getProtocol();]" doc:name="Variable"/>
        <set-variable variableName="host" value="#[url.getHost();]" doc:name="Variable"/>
        <set-variable variableName="port" value="#[url.getPort();]" doc:name="Variable"/>
        <set-variable variableName="path" value="#[url.getPath();]" doc:name="Variable"/>
        <logger message="Done" level="INFO"/>
    </flow>

在这里,您可以看到我正在有效负载中设置url,然后将其拆分为主机、端口、路径等,并将其存储在变量中

请注意如果您的url在表单中,您将使用表达式
#[url.getProtocol();]

但是如果您的url在表单中,您将无法获得端口号


参考:-

感谢您的回复。但正如问题中所描述的,我希望在不拆分url的情况下找到解决方案。因此,我现在不会接受您的回答,如果有人对此有其他解决方案,我会等待。我在mule jira中为此创建了一张罚单: