如何从mule中的soap端点获取请求参数?

时间:2016-11-24 00:13:11

标签: xml soap mule esb anypoint-studio

我想知道如何从soap端点获取请求参数。 更具体地说,我有一个基于http-listener的端点,我通过soap客户端调用这个端点,我希望得到一个在这个soap请求体内发送的值。 以下是技术规格..

我正在使用mule 3.8和Anypoint Studio 6.1.2

这是我风景的一部分 这是我的mule 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的内容,但我不知道这是解析我的xml请求的最佳方法。 什么是最好的方式?

希望这可以被理解。

如果有人可以帮助我,我感激不尽。 提前谢谢!

3 个答案:

答案 0 :(得分:0)

一种方法是使用转换消息组件:

app.get('/test_feature', function (req, res, next) {
    next(new Error("asdasdad"));
});

答案 1 :(得分:0)

我不完全确定你的意思&#34;我想在这个肥皂请求的主体中发送一个值&#34;。根据该语句,我假设您要在SOAP请求中插入一个值。你可以尝试如上所述的数据编织。

此外,xpath是用于从XML导航和检索值的东西。但不插入价值。

答案 2 :(得分:0)

我正在处理相同的情况。 使用 Xpath 解析 Soap Xml 并使用 SetVariable 设置变量,或者如果您想解析多个参数使用消息属性< / strong>设置,以便您不会填充变量序列。 干杯!