У меня проблема с мыльным вызовом, который я пытаюсь сделать из PHP.
Сначала некоторая справочная информация: вызов поступает в систему, которая выполняет поиск людей в большой системе CRM. Требуется информация, такая как имя, город, дата рождения и т. Д.) В случае успеха он должен вернуть один или несколько идентификаторов. Мыльный интерфейс является стандартным компонентом системы, поэтому я не могу повлиять на раскладку вызова.
Я сначала начал с создания запроса на мыло в SoapUI, чтобы посмотреть, смогу ли я заставить его работать. Я закончил с этим запросом мыла, который работает:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:hidl="http://humaninference.com/hidl-mapped">
<soap:Header/>
<soap:Body>
<hidl:HI__DQComponents__Identify__Searching__Search>
<hidl:model>MAGMA::PERSON</hidl:model>
<hidl:execution>Match</hidl:execution>
<hidl:interfaceFields>
<hidl:item>
<hidl:Name>master_id</hidl:Name>
<hidl:Value>0</hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>Name</hidl:Name>
<hidl:Value>jansen</hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>birthdate</hidl:Name>
<hidl:Value></hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>add_id</hidl:Name>
<hidl:Value></hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>street</hidl:Name>
<hidl:Value>oudegracht</hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>dumstreet</hidl:Name>
<hidl:Value></hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>housenumber</hidl:Name>
<hidl:Value></hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>postcode</hidl:Name>
<hidl:Value></hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>city</hidl:Name>
<hidl:Value>Utrecht</hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>citydum</hidl:Name>
<hidl:Value></hidl:Value>
</hidl:item>
<hidl:item>
<hidl:Name>add_line_twee</hidl:Name>
<hidl:Value></hidl:Value>
</hidl:item>
</hidl:interfaceFields>
</hidl:HI__DQComponents__Identify__Searching__Search>
</soap:Body>
</soap:Envelope>
Следующим шагом было создание того же запроса из PHP, для этого я написал этот фрагмент кода:
$result = $client->HI__DQComponents__Identify__Searching__Search(array(
'model' => 'MAGMA::PERSON',
'execution' => 'Search',
'interfaceFields' => array (
'item' => array ('Name' => 'master_id', 'Value' => '0' ),
'item' => array ('Name' => 'Name', 'Value' => 'jansen' ),
'item' => array ('Name' => 'birthdate', 'Value' => ' ' ),
'item' => array ('Name' => 'add_id', 'Value' => ' ' ),
'item' => array ('Name' => 'street', 'Value' => 'Oudegracht' ),
'item' => array ('Name' => 'dumstreet', 'Value' => ' ' ),
'item' => array ('Name' => 'housenumber', 'Value' => ' ' ),
'item' => array ('Name' => 'postcode', 'Value' => ' ' ),
'item' => array ('Name' => 'city', 'Value' => 'utrecht' ),
'item' => array ('Name' => 'citydum', 'Value' => ' ' ),
'item' => array ('Name' => 'add_line_twee', 'Value' => ' ' ),
)
));
echo '';
print_r($result);
echo '
';
Это, однако, не удается. Проблема довольно очевидна, поскольку элемент "item" повторяется несколько раз, а в PHP он является ключом массива, только элемент add_line_twee будет в массиве с именем "interfaceFields", поскольку он все время перезаписывается. 1013 *
К сожалению, я не могу понять, как сделать это по-другому, поэтому я не могу получить запрос, как в примере, который я создал из SoapUI.
Есть идеи?