骡子肥皂消费者过滤器信封

时间:2017-05-04 00:00:43

标签: mule

从肥皂消费者,我得到的反应没有肥皂环,但我需要回复肥皂环境。

我的代码:

<flow name="mws-api-intFlow"> 
        <http:listener config-ref="HTTP_Listener_Configuration" path="pocreate" doc:name="HTTP"/>
        <dw:transform-message doc:name="Transform Message">
            <dw:set-payload><![CDATA[%dw 1.0
              %output application/xml
                ---
              payload]]></dw:set-payload>
        </dw:transform-message>
        <ws:consumer config-ref="PO-Create" operation="MIOut_Sync_WSDL_WSPurchaseOrderPushRequestMessage" doc:name="Web_Service-POCreate"/>  
        <mulexml:dom-to-xml-transformer doc:name="DOM to XML"/>       
    </flow>

它返回以下回复:

 <?xml version='1.0' encoding='windows-1252'?>
    <ns1:PurchaseOrderExportReply xmlns:ns1="urn:Ariba:Buyer:vsap" partition="prealm_2068" variant="vrealm_2068">
        <ns1:Requisition_PurchImport_Item>
            <ns1:item>
                <ns1:LineItems>
                    <ns1:item>
                        <ns1:ERPPONumber>7133</ns1:ERPPONumber>
                        <ns1:NumberInCollection>1</ns1:NumberInCollection>
                        <ns1:PODeliveryDate>2014-04-27T00:00:00AribaBuyerTimeZone</ns1:PODeliveryDate>
                        <ns1:POQuantity>10.000</ns1:POQuantity>
                        <ns1:POUnitPrice>10.00</ns1:POUnitPrice>
                        <ns1:SAPPOLineNumber>00001</ns1:SAPPOLineNumber>
                    </ns1:item>
                </ns1:LineItems>
                <ns1:UniqueName>Test</ns1:UniqueName>
            </ns1:item>
        </ns1:Requisition_PurchImport_Item>
    </ns1:PurchaseOrderExportReply>

启用调试时,我发现响应带有soap env,但它只显示xml格式的正文部分:

    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP:Header />
   <SOAP:Body>
      <ns1:Requisition_PurchImport_Item xmlns:ns1="urn:Ariba:Buyer:vsap" partition="prealm_2068" variant="vrealm_2068">
         <ns1:Requisition_PurchOrdNumberImport_Item>
            <ns1:item>
               <ns1:LineItems>
                  <ns1:item>
                     <ns1:ERPPONumber>7133</ns1:ERPPONumber>
                     <ns1:NumberInCollection>1</ns1:NumberInCollection>
                     <ns1:PODeliveryDate>2017-04-27T00:00:00AribaBuyerTimeZone</ns1:PODeliveryDate>
                     <ns1:POQuantity>10.000</ns1:POQuantity>
                     <ns1:POUnitPrice>10.00</ns1:POUnitPrice>
                     <ns1:SAPPOLineNumber>00001</ns1:SAPPOLineNumber>
                  </ns1:item>
               </ns1:LineItems>
               <ns1:UniqueName>PR39</ns1:UniqueName>
            </ns1:item>
         </ns1:Requisition_PurchOrdNumberImport_Item>
      </ns1:Requisition_PurchImport_Item>
   </SOAP:Body>
</SOAP:Envelope>

我想得到这个回复,我怎么得到它?

1 个答案:

答案 0 :(得分:1)

Web消费者希望只接收 body 有效负载,它将自行添加SOAP信封部分,并生成没有信封的响应。
Web服务使用者旨在仅接受 XML文档的正文/操作部分,并将响应生成正文/操作。

所以你得到的是预期的。请参考文档: - https://docs.mulesoft.com/mule-user-guide/v/3.7/web-service-consumer
您需要Dataweave才能使用Envelope

创建完整的响应

您可以在此处使用XSLT转换器或DataWeave在响应之后添加您的soap信封,如下例所示: -

<ws:consumer config-ref="PO-Create" operation="MIOut_Sync_WSDL_WSPurchaseOrderPushRequestMessage" doc:name="Web_Service-POCreate"/>  

    <dw:transform-message doc:name="XMLSoapRes" >
            <dw:input-payload doc:sample="ListInventoryResponse.xml"/>
            <dw:set-payload><![CDATA[%dw 1.0
%output application/xml
%namespace ns0 http://yournamespace/tshirt-service
%namespace soap http://schemas.xmlsoap.org/soap/envelope/
---
soap#Envelope : {

soap#Body:payload

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