如何从骡子的soap端点获取请求参数?
问题描述:
我想知道如何从soap端点获取请求参数。 更具体地说,我有一个基于http-listener的端点,我通过一个soap客户端调用这个端点,我想获得一个在这个soap请求的主体中发送的值。 下面是技术上的规格..如何从骡子的soap端点获取请求参数?
我用骡子3.8和Anypoint工作室6.1.2
这是我的风景 这里的一部分是我的骡子XML的一部分:
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081"
doc:name="HTTP Listener Configuration"/>
<cxf:configuration name="CXF_Configuration" enableMuleSoapHeaders="true" initializeStaticBusInstance="true"
doc:name="CXF Configuration"/>
<ws:consumer-config name="Web_Service_Consumer" service="KarmaService" port="KarmaPort"
serviceAddress="http://localhost:8080/TestingWS/Karma" wsdlLocation="http://localhost:8080/TestingWS/Karma?wsdl" doc:name="Web Service Consumer"/>
<flow name="pichondemonoFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
<cxf:proxy-service configuration-ref="CXF_Configuration" payload="body" doc:name="CXF"/>
<set-variable variableName="pichonVar" value="#[message.inboundProperties.'http.query.params'.arg0]"
doc:name="Variable"/>
<choice doc:name="Choice">
.
.
.
.
这里是从了SoapUI客户端的请求:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sup="http://support.cxf.module.mule.org/">
<soapenv:Header/>
<soapenv:Body>
<sup:invoke>
<!--Optional:-->
<sup:arg0>Some value</sup:arg0>
</sup:invoke>
</soapenv:Body>
</soapenv:Envelope>
我也阅读一些有关xpath3但我不知道这是否是百世t解析我的xml请求的方式。 什么是最好的方法?
希望这可以被忽略。
我很感谢有人能帮助我。 在此先感谢!
答
的一种方法是使用变换邮件组件:由
<dw:transform-message metadata:id="234ee930-89d2-45ef-b888-96e940446fbe" doc:name="Transform Message">
<dw:input-payload doc:sample="C:\Users\willekr\Desktop\sample.xml"/>
<dw:set-payload><![CDATA[
%dw 1.0%output application/java
%namespace sup http://support.cxf.module.mule.org/
%namespace soapenv http://schemas.xmlsoap.org/soap/envelope/
---
payload.soapenv#Envelope.soapenv#Body.sup#invoke.sup#arg0
]]>
</dw:set-payload>
</dw:transform-message>
答
我并不很清楚你的意思:“我想在这个SOAP请求的身体发出了价值。”根据该声明,我假设你想要在SOAP请求中插入一个值。您可以按上面所述尝试数据编织。
此外,xpath是用于导航和检索XML中的值的东西。但不能插入价值。
答
我正在处理相同的情况。 使用的Xpath解析SOAP XML和设置使用SetVariable一个变量,如果你想解析多个PARAMS使用消息属性设置,这样你流不会与变量序列被填满。 干杯!