NuSoap addComplexType maxOccurs="unbounded"

NuSoap addComplexType maxOccurs="unbounded" - PHP - Programmation

Marsh Posté le 02-03-2005 à 16:17:03    

Salut,
J'aimerai savoir si quelqu'un sais comment on fait pour générer un type complexe de ce gout  

Code :
  1. <complexType name="mapItem">
  2. <sequence>
  3. <element name="key" nillable="true" type="xsd:anyType"/>
  4. <element name="value" nillable="true" type="xsd:anyType"/>
  5. </sequence>
  6. </complexType>
  7. <complexType name="Map">
  8. <sequence>
  9. <element maxOccurs="unbounded" minOccurs="0" name="item" type="apachesoap:mapItem"/>
  10. </sequence>
  11. </complexType>


avec NuSoap ???
 
En gros ca permet de faire une tableau associatif...
 
Je ne vous cache pas que ce code est générer avec axis (d'ou apachesoap)
et que c'est comme cela qu'il sérialise les HashMap...
 
pour le moment j'arrive a ceci:  

Code :
  1. <xsd:complexType name="profilDataTypeItem">
  2. <xsd:element>
  3. <xsd:element name="key" type="xsd:anyType"/>
  4. <xsd:element name="value" type="xsd:anyType"/>
  5. </xsd:element>
  6. </xsd:complexType>
  7. <xsd:complexType name="profilDataType">
  8. <xsd:sequence>
  9. <xsd:element name="item" type="tns:profilDataTypeItem"/>
  10. </xsd:sequence>
  11. </xsd:complexType>


 
en faisant comme ca:  
 

Code :
  1. $server->wsdl->addComplexType(
  2.     "profilDataTypeItem",
  3.     "complexType",
  4.     "struct",
  5.     "element",
  6.     "",
  7.     array( "key" => array( "type" => "xsd:anyType" ),
  8.      "value" => array( "type" => "xsd:anyType" )),
  9.     array(),
  10.     'xsd:string'
  11.     );
  12. $server->wsdl->addComplexType(
  13.     "profilDataType",
  14.     "complexType",
  15.     "array",
  16.     "sequence",
  17.     "",
  18.     array( "item" => array("type" => "tns:profilDataTypeItem" )),
  19.     array(), // "item" => array("maxOccurs"=> "unbounded", "minOccurs"=>"0" ) ),
  20.     'xsd:string'
  21.     );


 
mais pas possible d'écrire le maxOccurs,
 
un peu d'aide serait le bien venu


Message édité par rompi le 02-03-2005 à 16:18:09
Reply

Marsh Posté le 02-03-2005 à 16:17:03   

Reply

Marsh Posté le 03-03-2005 à 09:37:14    

Quelqu'un fait des services web ici ?

Reply

Marsh Posté le 03-03-2005 à 14:17:27    

Bon comme j'ai l'habitude de squater seul les topic que je crée, voilà je donne à tout le monde ma solution a mon problème  :)  
 
 
dans le serveur soap,

Code :
  1. $server->wsdl->addComplexType(
  2.     "mapItem",
  3.     "complexType",
  4.     "struct",
  5.     "all",
  6.     "",
  7.     array( "key" => array( "type" => "xsd:anyType" ),
  8.         "value" => array( "type" => "xsd:anyType" ))
  9.     );
  10. $server->wsdl->addComplexType(
  11.     "Map",
  12.     "complexType",
  13.     "array",
  14.     "",
  15.     "SOAP-ENC:Array",
  16.     array(),
  17.     array(
  18.      array( "ref"=>"SOAP-ENC:arrayType", "wsdl:arrayType"=>"tns:mapItem[]" )),
  19.   "tns:mapItem"
  20.     );
  21. $server->register( "insert",
  22. array("idPartenaire"=>"xsd:integer", "email"=>"xsd:string", "profilData"=>"tns:Map",
  23.  "validationKey"=>"xsd:string" ),
  24. array( "statusCode" => "xsd:integer" ),
  25. NAMESPACE, "rpc", "encoded",
  26. "Web Service d'insertion de profil emailing" );


 
et dans le client, malheuresement j'ai pas mieux,
 
 

Code :
  1. $client = new soapclient(WSDL, true);
  2. $proxy = $client->getProxy( );
  3. $profilMail = "jdupond@hardware.fr";
  4. $profilData[] =  array( "key" => "nom", "value" => "DUPOND" );
  5. $profilData[] =  array( "key" => "prenom", "value" => "Jean" );
  6. $result = $proxy->insert(2,$profilMail,$profilData,sha1($profilMail.MY_KEY));


 
Si quelqu'un un jour sais comment faire un serveur qui attend  
 

Code :
  1. $profilData["nom"] = "DUPOND";
  2. $profilData["prenom"] = "Jean";


 
pour le client, j'attend votre complex type bien volontier...

Reply

Marsh Posté le 03-03-2005 à 14:25:35    

j'utilise aussi nuSoap pour mon projet.. mais peut être que dans ton cas il serait mieux d'utiliser la libraire SOAP de PEAR non ?! (elle a l'air un peu plus maintenu)

Reply

Marsh Posté le 03-03-2005 à 17:50:58    

Salut la viper,
je regarderai quand j'aurai un peu plus de temps,
mais j'ai l'impression que PEAR::SOAP est moins documenté et moins utiliser, je me trompe p-e
 

Reply

Sujets relatifs:

Leave a Replay

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