[PHP-SOAP] Problème de choice

Problème de choice [PHP-SOAP] - PHP - Programmation

Marsh Posté le 30-07-2010 à 10:37:09    

Bonjour à tous.
 
Je travaille actuellement sur un client SOAP pour un webservice exterieur. Tous mon code est executé sur un serveur Debian Lenny à jour (donc PHP 5.2.6.dfsg.1-1+lenny8).
 
J'ai entre les main un combiné wsdl / xsd fournit par la source. Celui-ci me pose deux problèmes :
 
- Impossible d'utiliser des éléments avec "ref"
 
Lorsque je déclare mon client SOAP en incluant un wsdl contenant des élément avec des référence, php envoie une erreur.
 
Par exemple :
 

Code :
  1. <xsd:element ref="complement_numero" minOccurs="0" />


provoque une erreur :
 


SOAP-ERROR: Parsing Schema: unresolved element 'ref' attribut


Est-ce une limitation de l'implémentation de SOAP dans PHP ?
 
- Incapacité à utiliser des éléments "choice"
 
Certains types complexes de mes xsd comportent des choix.
 
Exemple :
 

Code :
  1. <xsd:element name="personne">
  2.         <xsd:complexType>
  3.             <xsd:choice>
  4.                 <xsd:group name="elgrp_personne_physique_simple" minOccurs="0">
  5.                     <xsd:annotation>
  6.                         <xsd:documentation xml:lang="fr">Definition de l objet personne physique sans les informations de naissance</xsd:documentation>
  7.                     </xsd:annotation>
  8.                     <xsd:sequence>
  9.                         <xsd:element name="nom_naissance" type="etatCivil" />
  10.                         <xsd:element name="prenom" type="etatCivil" />
  11.                         <xsd:element name="nom_usage" type="etatCivil" minOccurs="0" />
  12.                         <xsd:element name="sexe" type="sexe" />
  13.                     </xsd:sequence>
  14.                 </xsd:group>
  15.                 <xsd:group name="elgrp_personne_morale" minOccurs="0">
  16.                     <xsd:annotation>
  17.                         <xsd:documentation xml:lang="fr">Definition de l objet personne morale</xsd:documentation>
  18.                     </xsd:annotation>
  19.                     <xsd:sequence>
  20.                         <xsd:element name="raison_sociale" type="etatCivil" />
  21.                         <xsd:element name="siren" type="eltyp_siren" minOccurs="0" />
  22.                         <xsd:element name="societe_commerciale" type="elty_bool" />
  23.                     </xsd:sequence>
  24.                 </xsd:group>
  25.             </xsd:choice>
  26.         </xsd:complexType>
  27.     </xsd:element>


Lorsque je créer mon contenu SOAP via php, deux cas de figure se présentent :
 

Code :
  1. 'personne' => array (
  2.     'nom_naissance' => "Toto",
  3.     'prenom' => "Tata",
  4.     'sexe' => "M",
  5.     'societe_commerciale' => "oui",
  6.     'raison_sociale' => "TOTO-AUTO-R",
  7.     'siren' => "XXXXXXX"
  8. ),


Ce code me génère un XML valide, contenant ceci :
 

Code :
  1. <ns1:personne>
  2.     <ns1:nom_naissance>Toto</ns1:nom_naissance>
  3.     <ns1:prenom>Tata</ns1:prenom>
  4.     <ns1:sexe>M</ns1:sexe>
  5. </ns1:personne>


Seul le cas de la personne physique est traité, on a aucune info sur une société commerciale. Ce comportement est OK.
 
Par contre,  
 

Code :
  1. 'personne' => array (
  2.     'societe_commerciale' => "oui",
  3.     'raison_sociale' => "TOTO-AUTO-R",
  4.     'siren' => "XXXXXXX"
  5. ),


ce code ne permet pas de générer de XML :
 


SOAP-ERROR: Encoding: object hasn't 'nom_naissance' property


Le choix ne semble donc pas être interprété. Si on n'a pas la première occurrence (personne physique), c'est le drame.
 
Quelqu'un a-t-il déjà été confronté à l'un (ou les deux) de ces problèmes.
 
Par avance merci à vous pour votre aide !

Reply

Marsh Posté le 30-07-2010 à 10:37:09   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed