Я пытаюсь установить SOAP-соединение между поставщиком и мной, чтобы синхронизировать данные между нашими базами данных.
Мне удалось связать его с помощью простого soapCall, который бросил эти строки php ($ service - это имя функции Soap, к которой я обращаюсь, а $ data - ассоциативный массив, содержащий мои переменные):
$request = new SoapClient($client, array('soap_version' => SOAP_1_1));
$response = $request->$service($data);
Эти строки работают, если в моей схеме переменных XML нет коллекций, как в этом примере:
<?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>
<ServiceITryToReach xmlns="https://mysuplier:65100/">
<Login>login</Login>
<Password>pass</Password>
<Variables>
<Variable1>data</Variable1>
<Variable2>data</Variable2>
</Variables>
</ServiceITryToReach>
</soap:Body>
</soap:Envelope>
В приведенном выше примере мой ассоциативный массив, содержащий мои переменные, будет:
array('Login'=>'login','Password'=>'pass','Variables'=>array('Variable1'=>'data','Variable2'=>'data'));
Но, если моя схема XML содержит наборы переменных одного типа, как я могу представить ее с помощью ассоциативного массива в PHP?
<?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>
<ServiceITryToReach xmlns="https://mysuplier:65100/">
<Login>login</Login>
<Password>pass</Password>
<Variables>
<Variable>
<data>data</data>
</Variable>
<Variable>
<data>data</data>
</Variable>
<Variable>
<data>data</data>
</Variable>
</Variables>
</ServiceITryToReach>
</soap:Body>
</soap:Envelope>
В заключение я ищу другой простой способ запроса моего поставщика с несколькими переменными. Лучше всего было бы иметь прямой XML-ввод в моем методе soapCall вместо ассоциативного массива .
Идея ?
Спасибо,
Нико