PHP и XML – Как сгенерировать запрос на мыло в PHP из этого XML?

Я полностью новичок в операциях SOAP.

Мне предоставлен XML-документ (SOAP), чтобы получить некоторые пункты сбора для способа доставки.

Из руководства, расположенного здесь:

http://privpakservices.schenker.nu/package/package_1.3/packageservices.asmx?op=SearchCollectionPoint

Я вижу, что мне нужно использовать следующий запрос SOAP:

POST /package/package_1.3/packageservices.asmx HTTP/1.1 Host: privpakservices.schenker.nu Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://privpakservices.schenker.nu/SearchCollectionPoint" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <SearchCollectionPoint xmlns="http://privpakservices.schenker.nu/"> <customerID>long</customerID> <key>string</key> <serviceID>string</serviceID> <paramID>int</paramID> <address>string</address> <postcode>string</postcode> <city>string</city> <maxhits>int</maxhits> </SearchCollectionPoint> </soap:Body> </soap:Envelope> 

Дело в том, что я не знаю, как отправить это как запрос с помощью PHP, и как получить ответ.

Любая помощь, чтобы точно определить меня в правильном направлении, очень ценится.

ОБНОВИТЬ

Я могу прочитать данные ответа с помощью var_dump. Однако я не могу читать отдельные данные элемента.

Мне нужно прочитать данные ниже

 foreach($parser as $row) { echo $row->customerID; echo $row->key; echo $row->serviceID; } 

Если кто-то должен быть заинтересован, я дал правильный ответ:

 $soapUrl = "http://privpakservices.schenker.nu/package/package_1.3/packageservices.asmx?op=SearchCollectionPoint"; $xml_post_string = '<?xml version="1.0" encoding="utf-8"?><soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"><soap12:Body><SearchCollectionPoint xmlns="http://privpakservices.schenker.nu/"><customerID>XXX</customerID><key>XXXXXX-XXXXXX</key><serviceID></serviceID><paramID>0</paramID><address>RiksvŠgen 5</address><postcode>59018</postcode><city>Mantorp</city><maxhits>10</maxhits></SearchCollectionPoint></soap12:Body></soap12:Envelope>'; $headers = array( "POST /package/package_1.3/packageservices.asmx HTTP/1.1", "Host: privpakservices.schenker.nu", "Content-Type: application/soap+xml; charset=utf-8", "Content-Length: ".strlen($xml_post_string) ); $url = $soapUrl; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($ch); curl_close($ch); $response1 = str_replace("<soap:Body>","",$response); $response2 = str_replace("</soap:Body>","",$response1); $parser = simplexml_load_string($response2); 

следующий пример может помочь вам.

XML-схема SOAP

 <x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.dataaccess.com/webservicesserver/"> <x:Header/> <x:Body> <web:NumberToDollars> <web:dNum>10</web:dNum> </web:NumberToDollars> </x:Body> </x:Envelope> 

PHP-код

  $wsdl = 'http://www.dataaccess.com/webservicesserver/numberconversion.wso?WSDL'; try{ $clinet=new SoapClient($wsdl); $ver =array("dNum"=>"2002"); $quates=$clinet->NumberToDollars($ver); var_dump($quates); } catch(SoapFault $e) { echo $e->getMessage(); }