【问题标题】:how to get request parameters from soap endpoint in mule?如何从骡子的肥皂端点获取请求参数?
【发布时间】:2017-04-08 03:45:15
【问题描述】:

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

我正在使用 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 请求的最佳方式。 最好的方法是什么?

希望可以理解。

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

【问题讨论】:

    标签: xml soap mule esb anypoint-studio


    【解决方案1】:

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

    <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>
    

    【讨论】:

      【解决方案2】:

      我不太清楚您所说的“我想在这个肥皂请求的正文中发送一个值”是什么意思。根据该语句,我假设您想在 SOAP 请求中插入一个值。你可以试试上面所说的dataweave。

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2020-07-29
          • 2011-02-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多