2016-08-13 10 views
0

フロー内にWebサービスコンシューマがあり、単純にアウトバウンドVMキューに配置されるSOAPエンベロープに含まれるXMLを抽出したいとします。どのように私は流れでそれを達成することができます、私は石鹸メッセージのサンプルを示しています。WebサービスコンシューマからSoap Bodyを取得する

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

答えて

0

web-service-consumerは、XMLドキュメントのbody/operation部分のみを受け入れるように設計されており、応答としてbody/operationを生成します。
PLSがdataweave文書を経る: - https://docs.mulesoft.com/mule-user-guide/v/3.7/web-service-consumer

あなたが反応して、あなたの<ws:consumer/>後にSOAPエンベロープを追加するためのXSLT transforerまたはDataWeaveを使用して、ここでの例を次のように何ができるか -

<!-- 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>  
+0

ありがとうございます、しかし、私はそれをDOMトランスフォーマで解決しました。私はそれを追加しない石鹸の封筒を削除するために探していた。 – BreenDeen

+0

あなたはここで**単に "アウトバウンドVMキューに置くために石鹸の封筒に含まれているXMLを抽出したい"と言います。つまり、Soapエンベロープに含まれる応答を抽出したいということです。そうでなければ、 ''の後にレスポンスを得ることができます.Web-service-consumerはSoapエンベロープとヘッダなしで動作するように設計されています。 xmlに変換する必要があります –

-2

私が見つけた解決策は非常に簡単です

 <mulexml:dom-to-xml-transformer doc:name="SOAP Response to XML" encoding="UTF-8" mimeType="application/xml" outputEncoding="UTF-8"/> 
関連する問題