HTTP Request Connector(二)

来源:互联网 发布:数据库管理系统培训 编辑:程序博客网 时间:2024/06/05 06:04

POST请求中发送表单参数

为了在POST请求中发送参数,Mule消息的有效负载应(payload)该是一个带有要发送的参数的名称和值的映射。因此,在您的请求中发送表单参数的一种方法是在HTTP请求连接器之前添加一个Set payload元素,以便将消息的payload设置为发送的表单参数:


例如,如果您使用Set payload元素来设置您的payload:

set_payload

#[{'key1':'value1', 'key2':'value2'}]

一个POST请求发送到http://www.example.com/test,Content-type:application/ x-www-form-urlencoded,和body“key1 = value1&key2 = value2”;

就像在用户提交了带有这两个值的表单之后,浏览器会发送请求一样。

使用Studio XML编辑器添加自定义参数

HTTP请求连接器允许您包含以下类型的参数:
  • Query params

  • A map of multiple query params

  • URI params

  • A map of multiple URI params

  • Headers

  • A map of multiple headers

此外,还可以在Mule消息有效负载中发送表单参数,包括在Mule消息负载中。您还可以在您的请求中添加附件,通过添加附件处理器到您的流中。

Query Parameters

您可以通过在请求中使用request-builder元素来添加查询参数:
<http:request-config name="HTTP_Request_Configuration" host="example.com" port="8081" doc:name="HTTP_Request_Configuration"/> <flow name="test_flow">    <http:request config-ref="HTTP_Request_Configuration" path="test" method="GET">        <http:request-builder>            <http:query-param paramName="k1" value="v1" />            <http:query-param paramName="k2" value="v2" />        </http:request-builder>    </http:request></flow>
This performs a GET request to http://www.example.com/test?k1=v1&k2=v2.

动态设置查询参数Dynamically Setting Query Parameters

如果查询参数应该动态设置(例如,在设计时不知道请求中需要多少查询参数),可以通过一个返回参数映射的MEL表达式来设置它们。
<http:request-config name="HTTP_Request_Configuration" host="example.com" port="8081" doc:name="HTTP_Request_Configuration"/> <flow name="test_flow">    <set-variable variableName="customMap" value="#[{'k1':'v1', 'k2':'v2'}]" />    <http:request config-ref="HTTP_Request_Configuration" path="test" method="GET">        <http:request-builder>            <http:query-params expression="##[flowVars.customMap]" />        </http:request-builder>    </http:request></flow>
这个示例生成与前一个请求相同的请求,一个GET请求
http://www.example.com/test?k1=v1&k2=v2.

query-param和query-params元素可以组合在请求构建器中,每个请求的参数解析(在当前消息上下文中评估所有的MEL表达式),按照顺序,它们是在请求构建器中指定的。这允许您在必要时覆盖参数。如果相同的参数定义不止一次,则使用最新的值。

<http:request-config name="HTTP_Request_Configuration" host="example.com" port="8081" doc:name="HTTP_Request_Configuration"/> <flow name="test_flow">    <set-variable variableName="customMap" value="#[{'k2':'new', 'k3':'v3'}]" />     <http:request config-ref="HTTP_Request_Configuration" path="test" method="GET">        <http:request-builder>            <http:query-param paramName="k1" value="v1" />            <http:query-param paramName="k2" value="v2" />            <http:query-params expression="#[flowVars.customMap]" />        </http:request-builder>    </http:request> </flow>
在本例中,在映射中定义的参数k2将覆盖前面定义的k2  query-param。结果是一个GET请求到http://www.example.com/test?k1=v1&k2=new&k3=v3。

URI Parameters

当参数应该是路径的一部分时,可以在path属性中添加占位符,其中每个参数都有一个名称,
然后,它们必须从请求构建器中引用,以提供值,使用uri-param元素:

12345678910
<http:request-config name="HTTP_Request_Configuration" host="example.com" port="8081" doc:name="HTTP_Request_Configuration"/> <flow name="test_flow">    <http:request config-ref="HTTP_Request_Configuration"  path="/customer/{customerId}" method="GET">         <http:request-builder>            <http:uri-param paramName="customerId" value="20" />        </http:request-builder>    </http:request> </flow>

This performs a GET request to http://www.example.com/customer/20.


动态设置URI参数(Dynamically Setting URI Parameters)

如果要动态设置URI参数,可以通过一个返回一个参数映射的MEL表达式来设置:

注意:
如果您在path字段中输入值时,会自动添加额外的uri-param参数,删除这些参数,因为它们是由动态uri-params字段所处理的。
对于本例,您需要创建一个名为customMap的变量。如果你将这个变量设置为mel表达式#[{“p1”:“v1”,“p2”:“v2”}],它生成一个GET请求到http://www.example.com/test/v1/v2。
与查询参数一样,uri-param和uri-params元素可以在连接器内组合。

它们被解析为每个请求(在当前消息上下文中评估所有的MEL表达式),并且在请求构建器中指定它们。这允许您在必要时覆盖参数。如果相同的参数定义不止一次,则使用最新的值。

在任何情况下,在引用URI参数的路径中使用的占位符都应该与请求构建器中URI参数的名称相匹配(在所有的MEL表达式都被评估之后)

Headers
您可以像查询参数一样轻松地将HTTP头添加到请求中。

这执行一个GET请求到http://www.example.com/test,添加以下标题:

1

2

HeaderName1: HeaderValue1

HeaderName2: HeaderValue2


这与通过属性转换器在Mule消息中设置出站属性完全相同。出站属性在请求中映射为HTTP报头。因此,您可以通过在HTTP请求连接器之前添加两个属性转换器来实现相同的功能,一个用于每个需要设置的新标题


在这两种情况下,响应映射的头部都是在处理完响应后的Mule消息的入站属性。

动态设置标题
如果标题必须动态设置(例如,在设计时您不知道请求中需要多少额外的headers),它们可以通过一个返回一个标题映射的MEL表达式来设置。

对于上面的示例,您首先需要生成一个名为customMap的变量。如果你将这个变量设置为下面的mel表达式:

#[{'TestHeader':'TestValue'}]

它生成一个GET请求到http://www.example.com/test,添加以下header:

TestHeader: TestValue

就像查询参数一样,头headerheaders元素可以在连接器中组合。它们为每个请求解析(在当前消息上下文中评估所有的MEL表达式),并且在请求构建器中指定它们。这允许在必要时覆盖参数。如果相同的参数定义不止一次,则使用最新的值。


POST请求中发送表单参数Sending Form Parameters in a POST Reque

为了在POST请求中发送参数,Mule消息的有效负载应该是一个带有要发送的参数的名称和值的映射。因此,在您的请求中发送表单参数的一种方法是在HTTP请求连接器之前添加一个Set有效负载元素,以便将消息的有效负载设置为发送的表单参数:


例如,如果您使用Set payload元素来设置您的有payload:

 #[{'key1':'value1','key2':'value2'}]

一个POST请求发送到http://www.example.com/test,Content-type:application/x-www-form-urlencoded,body “key1 = value1&key2 = value2”; 就像在用户提交了带有这两个值的表单之后,浏览器会发送请求一样。



阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 帝昊哲尹千萌 千汇城 千江月 千泉159代餐粉怎么样 泪如泉涌的意思 千泷醉 魔殇陌 千泷沟大瀑布旅游 千泷沟大瀑布值得去吗 福润阿胶糕 福润雅居 润福堂阿胶 天润福瑞阁酒店 润福堂阿胶糕怎么样 福润雅居二手房 千淘之家 千淘惠 千淘万漉 千淘万漉虽辛苦的下一句 千淘万漉虽辛苦的哲学道理 千淘万漉虽辛苦全诗 千松坝森林公园自驾游 千年游 西江千户苗寨 一日游 岳游网络千炮捕鱼ol 千湖国 千湖之国 千湖岛 力源信息千股千评 千滚水能喝吗 千滚水 千滚水隔夜水 千滚水的危害 千滚水为什么不能喝 千滚水不能喝科学吗 滚水 千灯湖公园 千灯湖 千灯湖公园旅游 千灯湖旅游 佛山千灯湖 千灯湖楼盘