WSO2 ESB - 如何在WSDL调用中获取和设置cookie

时间:2014-10-30 15:56:12

标签: cookies wsdl wso2 wso2esb

我使用WSO2 ESB并希望将2个Web服务连接在一起 - 在计时器上从一个服务中提取数据并将其推送到另一个服务。

问题是其中一项服务使用cookie验证呼叫者。首先需要使用用户名和密码调用GetSession方法。对此调用的响应会设置cookie。然后使用此cookie进行其他调用。

我无法在文档中的任何位置找到,如何从一次调用的结果中获取cookie并将其设置为后续调用。它完全可以实现吗?如果是这样 - 怎么样?

这是我的序列代码:

<sequence xmlns="http://ws.apache.org/ns/synapse" name="SampleName" trace="enable">
   <payloadFactory media-type="xml">
      <format>
         <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
            <Body>
               <GetSessionWithCredentials xmlns="blabla">
                  <User>bla</User>
                  <Password>bla</Password>
               </GetSessionWithCredentials>
            </Body>
         </Envelope>
      </format>
   </payloadFactory>
   <call>
      <endpoint key="conf:/Tracker"></endpoint>
   </call>
   <payloadFactory media-type="xml">
      <format>
         <GetTrackingList xmlns="blabla"></GetTrackingList>
      </format>
   </payloadFactory>
   <property xmlns:ns="http://org.apache.synapse/xsd" name="Cookie" expression="$trp:Cookie"></property>
   <call>
      <endpoint key="conf:/Tracker"></endpoint>
   </call>
   <log level="full"></log>
</sequence>

非常感谢

1 个答案:

答案 0 :(得分:2)

获取Cookie标头:<property name="Cookie" expression="$trp:Cookie"/> 如果你想获得一个cookie及其值,请使用带有'substring'的xpath表达式作为例子

设置值为JSESSIONID = 1的Cookie标头:<property name="Cookie" value="JSESSIONID=1" scope="transport"/>