从肥皂消费者,我得到的反应没有肥皂环,但我需要回复肥皂环境。
我的代码:
<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>
我想得到这个回复,我怎么得到它?
答案 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>