Mule将JSESSIONID从第一个REST请求设置为第二个REST请求或如何将cookie放入其中

时间:2016-05-19 12:23:23

标签: rest cookies mule bpm bonita

对于我的论文我正在将Bonita BPM集成到Mule SOA中。

要在Bonita中启动新案例或流程实例,我必须调用Bonita REST。首先,我必须使用Bonita REST进行身份验证。这就是我的问题。

身份验证的工作方式类似于“您必须调用loginservice并将响应cookie放在以后的所有请求中”。

如何在骡子流中完成?有些文章告诉我,copy-properties propertyName =“JSESSIONID”应该这样做。但这不起作用。

有人有想法吗?

进一步说明我的流程和相关的打印信息:

PRINT1:CopyPropertiesTransformer:属性值为null,不会复制任何属性

PRINT 2:LoggerMessageProcessor:{Set-Cookie = JSESSIONID = F60114E3ECB450A62171E3D63EAC3E4D;路径= /博尼塔/;仅Http}

PRINT 3:响应代码401映射为失败。消息有效内容的类型为:BufferInputStream

<http:request-config name="bos" host="localhost"
    port="8080" basePath="/bonita" doc:name="bos-connection" />


<flow name="sendOrderFlow">

    <http:listener config-ref="HTTP_Listener_Configuration"
        path="/" doc:name="HTTP" />

    <http:request config-ref="bos" path="loginservice"
        method="GET" followRedirects="false" doc:name="bos-login">
        <http:request-builder>
            <http:query-param paramName="username" value="walter.bates" />
            <http:query-param paramName="password" value="bpm" />
        </http:request-builder>

    </http:request>

    <copy-properties propertyName="JSESSIONID" /> <!-- PRINT 1 HERE -->
    <logger message="#[headers:INBOUND:Set-Cookie]" level="INFO" />  <!-- PRINT 2 HERE -->

    <http:request config-ref="bos"
        path="API/bpm/process" method="GET" followRedirects="false" doc:name="bos-listAvailableProcesses">
        <http:request-builder>
            <http:query-param paramName="p" value="0" />
        </http:request-builder>
    </http:request>

1 个答案:

答案 0 :(得分:0)

除了JSESSIONID,您还需要在HTTP标头中包含X-Bonita-API-Token。该标头的值以cookie的形式提供,并附带身份验证的答案(即对loginservice的调用)。