如何在 Mule 的 http 请求连接器中动态设置 full url
How to set full url dynamically in http request connector in Mule
如 所示,当使用 mule 请求 http 端点时,可以在变量中包含 url 的部分。
但我有一个完整的 url,从支持 hateoas 的端点返回。是否可以将这个完整的 url 用于请求而不将其分成几个部分(主机、端口、路径)?
满url我是说……像“http://example.com/a/specific/path”而不是 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 http://example.com:80/a/specific/path,然后将其拆分为主机、端口、路径等,并将其存储在变量中。
请注意 如果您的 url 格式为 http://example.com:80/a/specific/path,您将使用表达式 #[url.getProtocol();]
[=27= 获取端口]
但是如果你的url是http://example.com/a/specific/path的形式,你就得不到端口号。
参考:- https://docs.oracle.com/javase/tutorial/networking/urls/urlInfo.html
如
但我有一个完整的 url,从支持 hateoas 的端点返回。是否可以将这个完整的 url 用于请求而不将其分成几个部分(主机、端口、路径)?
满url我是说……像“http://example.com/a/specific/path”而不是 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 http://example.com:80/a/specific/path,然后将其拆分为主机、端口、路径等,并将其存储在变量中。
请注意 如果您的 url 格式为 http://example.com:80/a/specific/path,您将使用表达式 #[url.getProtocol();]
[=27= 获取端口]
但是如果你的url是http://example.com/a/specific/path的形式,你就得不到端口号。
参考:- https://docs.oracle.com/javase/tutorial/networking/urls/urlInfo.html