mule - 将 Cookie 设置为 Mule HTTP 请求
问题描述
我需要将 cookie 设置为 mules HTTP 请求组件。我验证了不同的可能性,但没有成功。我正在使用 Mule 3.9 CE。有什么建议吗?
我在下面尝试过(启用使用 Cookies)
- 启用 HTTP 请求组件的用户 Cookie 选项
- 试图将 cookie 添加到 Header 中(将 cookie 添加为组件配置中的标题)
- 使用 set 属性设置 cookie 并将其用作 outbondproperties。
- 尝试使用消息转换器添加 cookie - 与 2 相同但方法不同
- 试图将 cookie 的 HTTP 请求元数据设置为字符串类型
- 尝试使用 org.mule.transport.http.CookieHelper.parseCookiesAsAClient 检索 cookie,然后在第二次调用之前设置为属性
关于流程: 1. 发送带有凭据的请求——只是为了获取 cookie(这部分在当前的 mule 进程中工作) 2. 发送没有凭据的相同请求(此请求使用 cookie)并返回实际响应。
请在下面找到xml(子流)
<sub-flow name="test">
<invoke name="AcksRequest" object-ref="acksRequest" method="getAcksRequestWithCred" methodArguments="#[flowVars.txFile], ${user}, ${password}" doc:name="Invoke AcksRequest"/>
<set-variable variableName="acksRequest" value="#[payload]" doc:name="Set Acks Request"/>
//This request sends request just for cookie
<http:request config-ref="HTTP_Request_Configuration" path="/test.asmx" method="POST" doc:name="HTTPS POST" metadata:id="ec75b200-28d1-49fc-bdcd-6883d6ba27c8">
<http:request-builder>
<http:header headerName="Content-Type" value="text/xml"/>
</http:request-builder>
</http:request>
//Get cookies and set it as property
<logger message="Cookies----> #[message.inboundProperties['set-cookie']]" level="INFO" doc:name="Logger"/>
<set-property propertyName="Cookies" value="#[message.inboundProperties['set-cookie']]" doc:name="Property"/>
<logger message="Outbond Property ----> #[message.outboundProperties.Cookies]" level="INFO" doc:name="Logger"/>
//Another call with cookie
<invoke name="AcksRequest1" object-ref="acksRequest" method="getAcksRequestWithoutCred" methodArguments="#[flowVars.txFile]" doc:name="Invoke AcksRequest"/>
<http:request config-ref="HTTP_Request_Configuration" path="/test.asmx" method="POST" doc:name="HTTPS POST" metadata:id="4c78fe88-7b4c-47b9-bb9b-4a627207ae46">
<http:request-builder>
<http:header headerName="Content-Type" value="text/xml"/>
</http:request-builder>
</http:request>
<object-to-string-transformer doc:name="Object to String"/>
<set-variable variableName="acks" value="#[payload]" doc:name="Set Acks Response"/>
</sub-flow>
解决方案
推荐阅读
- python - 运行时错误“imageio.mimread() has read over 256 MiB of”背后的原因是什么?
- c# - Xamarin 表单 - Wordpress REST API - 查看用户名和密码
- woocommerce - 更改帐单状态 Woocommerce 时清除帐单地址
- git - git:如何从当前不存在的 git 历史记录中删除 *all* 文件?
- postgresql - 是否有系统程序或方法来找出事务日志已满问题?
- html - CSS html段落在悬停时移动
- apache-spark - 在 Pyspark 上将一列拆分为更多列时遇到问题
- flutter - 如何在 Flutter 中启动视图时禁用屏幕键盘?
- android - bitmap.sameAs() 不适用于 Intent Picking 的图像比较
- python - Matplotlib 图不显示图例