从Web服务消费者那里获取肥皂体

时间:2016-08-13 04:03:13

标签: soap mule

我在流程中有一个Web服务使用者,只想提取soap信封中包含的XML以放在出站虚拟机队列中。我如何在流程中实现这一点,我已经展示了肥皂消息的样本;

<ws:consumer-config name="WS_Connector"
            connector-ref="HTTP_HTTPS" wsdlLocation="orderService.wsdl"
            service="OrderService" port="OrderServiceWS"
            serviceAddress="http://ws-orders.com?responseTimeout=60000"
            doc:name="Web Service Consumer" />

            <flow name="mainFlow">  
                <vm:inbound-endpoint path="request.queue"/>
           <ws:consumer config-ref="WS_Connector"
            operation="orderTShirts" doc:name="TShirt Service Consumer">
           </ws:consumer>
        <!-- Get Just the XML Payload without the Soap Envelope 
          for the vm outbound queue
             <tshirt xmlns="http://www.webservice.order-service">
                  <size>17</size>
                       <color>red</color> 
              </tshirt>
            -->
        <vm:outbound-endpoint path="response.queue"/>
      </flow>



                      <?xml version="1.0" encoding="utf-8"?>
                  <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" 
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                     xmlns:xsd="http://www.w3.org/2001/XMLSchema">

                  <soap:Body>
                    <tshirt xmlns="http://www.webservice.order-service">
                       <size>17</size>
                       <color>red</color> 
                       </tshirt>
                   </soap:Body>
                </soap:Envelope>

1 个答案:

答案 0 :(得分:0)

Web服务使用者只能接受XML文档的正文/操作部分,并会响应生成正文/操作。
请浏览数据编辑文档: - https://docs.mulesoft.com/mule-user-guide/v/3.7/web-service-consumer

您可以在此处使用XSLT transforer或DataWeave在响应<ws:consumer/>后添加肥皂信封,如下例所示: -

<!-- your code above -->
    <ws:consumer config-ref="WS_Connector" operation="orderTShirts" doc:name="TShirt Service Consumer"/>
        <dw:transform-message doc:name="XML to JSON" >
                <dw:input-payload doc:sample="ListInventoryResponse.xml"/>
                <dw:set-payload><![CDATA[%dw 1.0
    %output application/xml
    %namespace ns0 http://mulesoft.org/tshirt-service
    %namespace soap http://schemas.xmlsoap.org/soap/envelope/
    ---
    soap#Envelope : {

    soap#Body:payload

    }]]></dw:set-payload>
      </dw:transform-message>