我使用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>
非常感谢
答案 0 :(得分:2)
获取Cookie标头:<property name="Cookie" expression="$trp:Cookie"/>
如果你想获得一个cookie及其值,请使用带有'substring'的xpath表达式作为例子
设置值为JSESSIONID = 1的Cookie标头:<property name="Cookie" value="JSESSIONID=1" scope="transport"/>