我正在通过WSO2ESB中的XSLT将XML请求转换为SOAP,只是想知道是否可以使请求参数可用于响应?
E.g。
<request>
<test>123</test>
<param1>testing</param1>
</request>
- &GT;转换为SOAP
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">#S:Body><ns2:testrequest xmlns:ns2="http://xml.testing.com/test"><teststring>testing</teststring></ns2:testrequest></S:Body></S:Envelope></soapenv:Body></soapenv:Envelope>
在回复中
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:testresponse xmlns:ns2="http://xml.testing.com/test"><responsestring>success</responsestring></ns2:testresponse></S:Body></S:Envelope></soapenv:Body></soapenv:Envelope>
我想以XML格式返回
<responsestring>
<test>123</test>
<return1>success</return1>
</responsestring>
如您所见,123未发送到服务器且未从服务器收到。但是,客户端正在发送此参数,我想在请求中使用此参数并发回作为响应,这可能吗?怎么样?我对突触非常新,对WSO2ESB来说很新,有人可以开导我吗?
感谢。
答案 0 :(得分:0)
是的,这是可能的。您可以在Insequence中使用property mediator将所需值设置为属性,然后使用enrich mediator将其添加到响应的后序中。
答案 1 :(得分:0)
现在就开始工作了。 只需将属性介体与xSLT一起添加到insequence和outsequence中,其中xslt试图从test属性中获取值。就是这样!
InSequence的
<property xmlns:ns="http://org.apache.synapse/xsd" name="TEST" expression="//request/*[local-name()=test]" scope="default"/>
outsequence
<xslt key="xxxx.xslt">
<property name="test" expression="get-property('TEST')"/>
</xslt>