Próbuję po prostu wysłać RAW xml do usługi sieciowej za pomocą PHP i SoapClient. Problem polega na tym, że kiedy koduję mój XML, zmienia on kolejność elementów w XML, który jest konwertowany do tablicy asocjacyjnej.Wysyłanie nieprzetworzonego XML za pomocą PHP Prośba o moduł SoapClient
// Initialize the Soap Client:
$this->_transactionServicesClient = new SoapClient($soapWSDLUrl);
Jak lub jaki byłby najlepszy sposób na przesłanie poniższego XML jako ciąg do mojego SoapClient?
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.micros.com/pos/les/TransactionServices">
<SOAP-ENV:Body>
<ns1:PostTransaction>
<ns1:REQ>
<ns1:RequestHeader>
<ns1:InterfaceVersion>3.0.7</ns1:InterfaceVersion>
<ns1:ClientName>TRANS_SERVICES</ns1:ClientName>
</ns1:RequestHeader>
<ns1:CheckDetailEntries>
<ns1:MenuItem>
<ns1:ReferenceEntry>Pizza4</ns1:ReferenceEntry>
<ns1:Count>1</ns1:Count>
<ns1:Price>10.00</ns1:Price>
<ns1:ItemNumber>112001</ns1:ItemNumber>
<ns1:PriceLevel>1</ns1:PriceLevel>
<ns1:Seat xsi:nil="true"/>
</ns1:MenuItem>
</ns1:CheckDetailEntries>
<ns1:CheckHeaderRequest>
<ns1:CheckId>03:21:05.050505</ns1:CheckId>
<ns1:GuestCount>1</ns1:GuestCount>
<ns1:GuestInformation>
<ns1:ID>001</ns1:ID>
<ns1:FirstName>xxx</ns1:FirstName>
<ns1:LastName>xxx</ns1:LastName>
<ns1:Address1>xxx Rd</ns1:Address1>
<ns1:Address2>xx</ns1:Address2>
<ns1:Address3>xx</ns1:Address3>
<ns1:PhoneNum>xx</ns1:PhoneNum>
<ns1:UserText1>None</ns1:UserText1>
<ns1:UserText2>None</ns1:UserText2>
<ns1:UserText3>None</ns1:UserText3>
<ns1:GUID></ns1:GUID></ns1:GuestInformation>
</ns1:CheckHeaderRequest>
<ns1:OrderTypeNumber>1</ns1:OrderTypeNumber>
</ns1:REQ>
</ns1:PostTransaction>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Aktualizacja/Rozdzielczość: Oto kod użyłem do rozszerzenia klienta SOAP i wysłać moje surowe Koperta Mydło: My answer below
Jestem zdezorientowany - czy wysyłasz ten XML do usługi SOAP i nie jest on przetwarzany lub masz XML, który chcesz wysłać wewnątrz komunikatu SOAP? – enygma
Mam XML Chcę wysłać wiadomość mydła. Kiedy wysyłam dane zakodowane w tablicy asocjacyjnej, węzły tracą oryginalną kolejność, która przerywa żądanie. Przykład: wewnątrz CheckDetailEntries możesz mieć znaczniki MenuItem lub Condiment. Ale aby skojarzyć Condiments z MenuItems, muszą one być w określonej kolejności, która jest tracona podczas kodowania XML. Tak więc wystarczy wysłać ciąg znaków XML do metody PostTransaction do przetworzenia. – Fostah
Czy istnieje inny sposób, w jaki można je skojarzyć? Poleganie na kolejności przychodzących XML wydaje mi się trochę krucha ... – enygma