J'ai un problème avec un appel de savon que j'essaye de faire de PHP. D'abord quelques informations de base: L'appel va à un système qui fait une recherche de personne sur un grand système de CRM. Il nécessite des informations telles que le nom, la ville, la date de naissance, etc.) En cas de succès, il doit renvoyer un ou plusieurs identifiants. L'interface de savon est une pièce standard du système, donc je ne peux pas influencer la disposition de l'appel.PHP a répété des éléments dans un appel de savon
J'ai d'abord commencé par construire la demande de savon dans SoapUI, pour voir si je pouvais le faire fonctionner. J'ai fini avec cette demande de savon, qui travaille:
<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>
L'étape suivante a consisté à construire la même demande de PHP, pour que j'ai écrit ce morceau de code:
$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 '<PRE>';
print_r($result);
echo '</PRE>';
Cela échoue cependant . Le problème est assez évident, puisque l'élément "item" est répété plusieurs fois, et en PHP c'est la clé du tableau, seul l'item add_line_twee sera dans le tableau appelé "interfaceFields", car il est écrasé tout le temps.
Malheureusement, je n'arrive pas à comprendre comment faire autrement, donc je ne peux pas obtenir la demande d'être comme dans l'exemple que j'ai créé à partir de SoapUI.
Des idées?
Étonnamment, cela a fonctionné! Je pensais que ce ne serait pas parce que je pensais que les éléments nommés 'Item' seraient obligatoires, mais apparemment pas. Merci! – Erikl