首页 > 解决方案 > 将 Cookie 设置为 Mule HTTP 请求

问题描述

我需要将 cookie 设置为 mules HTTP 请求组件。我验证了不同的可能性,但没有成功。我正在使用 Mule 3.9 CE。有什么建议吗?

我在下面尝试过(启用使用 Cookies)

  1. 启用 HTTP 请求组件的用户 Cookie 选项
  2. 试图将 cookie 添加到 Header 中(将 cookie 添加为组件配置中的标题)
  3. 使用 set 属性设置 cookie 并将其用作 outbondproperties。
  4. 尝试使用消息转换器添加 cookie - 与 2 相同但方法不同
  5. 试图将 cookie 的 HTTP 请求元数据设置为字符串类型
  6. 尝试使用 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----&gt;  #[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 ----&gt; #[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>

标签: mulemule-componentmule-esbmulesoft

解决方案


推荐阅读