1.你需要从SOAP PROXY中获取值
2.你需要将它存储在一个局部变量中
3.您需要使用查询参数将值传递给 REST SERVICE
4.您需要将来自 REST 服务的响应格式化为 SOAP 格式
SOAP 请求将是,
<request>
<fromDate>2012-01-01</fromDate>
<toDate>2012-12-31</toDate>
</request>
您可以将 SOAP PROXY 请求中的值存储为,
<proxy xmlns="http://ws.apache.org/ns/synapse" name="RESTProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true><target>
<inSequence>
<property name="fromDate" expression="//fromDate" scope="default" type="STRING"/>
<property name="toDate" expression="//toDate" scope="default" type="STRING"/>
然后您可以通过以下方式将值传递给 REST 服务,
<send>
<endpoint>
<http method="GET" uri-template="http://localhost/person?fromDate=={get-property('fromDate')}&toDate={get-property('toDate')}"/>
</endpoint>
</send>
</inSequence>
然后您可以使用PayloadFactory调解器格式化响应,
<outSequence>
<payloadFactory media-type="xml">
<format>
<person>
<Name>$1</Name>
<Age>$2</Age>
<Sex>$3</Sex>
</person>
</format>
<args>
<arg evaluator="json" expression="$.Name"/>
<arg evaluator="json" expression="$.Age"/>
<arg evaluator="json" expression="$.Sex"/>
</args>
</payloadFactory>
<send/>
</outSequence>
</target>
<description/>
</proxy>
所以代理的响应将是,
<person>
<name>Geoff</name>
<age>22</age>
<sex>Male</sex>
<person>