IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Web Service] SOAP : comment récupérer un tableau associatif


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Par défaut [Web Service] SOAP : comment récupérer un tableau associatif
    Bonjour

    Je débute avec SOAP. J'essaye de créer une fonction dans mon webservice qui me retourne un tableau associatif.

    J'ai donc créé un type complexe que voila :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    			<xsd:complexType name="tiers">
    				<xsd:all>
    					<xsd:element name="id" type="xsd:integer"/>				
    					<xsd:element name="nom" type="xsd:string"/>
    					<xsd:element name="prenom" type="xsd:string"/>
    				</xsd:all>
    			</xsd:complexType>

    Ma fonction get_tiers_depuis_id($id) :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    	<message name="get_tiers_depuis_idRequest">
    		<part name="id" type="xsd:integer" />
    	</message>
     
    	<message name="get_tiers_depuis_idResponse">
    		<part name="return" type="tns:tiers" />
    	</message>
     
     
     
    	<portType name="tiersPortType">
     
     
     
    		<operation name="get_tiers_depuis_id">
    			<documentation>Obtenir un tiers</documentation>
    			<input message="tns:get_tiers_depuis_idRequest"/>
    			<output message="tns:get_tiers_depuis_idResponse"/>
    		</operation>
     
    	</portType>

    Lorsque j'appelle la fonction de mon webservice, c'est un objet qui m'est retourné et non une variable de type tableau.
    stdClass Object ( [id] => 21 [nom] => TOTO [prenom] => TITI )
    Comment faire pour que ce soit un tableau associatif qui me soit retourné? Coté PHP c'est ok, ma méthode retourne bien un tableau associatif. C'est lors de l'appel du webservice que ça ne retourne pas un tableau associatif, donc c'est du coté du WSDL qu'il y a quelque chose à revoir. Je cherche depuis hier mais je n'y arrive pas.

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    j'ai pas souvenir que le spec de SOAP indique la possibilité de gérer la notion de tableau associatif (au sens de PHP)...
    Tu devrais plutôt t'orienter vers une réponse de type cle-valeur

  3. #3
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Par défaut
    Merci pour ta réponse. Si je veux faire une réponse de type cle valeur, que dois-je modifier dans mon wsdl? Je ne vois pas comment procéder.
    Je suis vraiment débutant la dedans. Merci

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    SOAP et débutant c'est assez opposé

  5. #5
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 19
    Par défaut
    J'ai finalement abandonné l'idée d'avoir le résultat sous la forme d'un tableau, ça n'a pas l'air réalisable. J'espère que ça ne posera pas de problème avec d'autres langages...
    Si le client est en php, j'ai trouvé cette fonction pour convertir l'objet en tableau
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    	function obj2array($obj) 
    	{
    		$out = array();
    		foreach ($obj as $key => $val) 
    		{
    			switch(true) 
    			{
    				case is_object($val):
    					$out[$key] = obj2array($val);
    				break;
     
    				case is_array($val):
    					$out[$key] = obj2array($val);
    				break;
     
    				default:
    					$out[$key] = $val;
    			}
    		}
     
    		return $out;
    	}

    Je passe le sujet en résolu, bien qu'il ne le soit pas mais j'abandonne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Web Service][SOAP] Récupérer un tableau d%u2019un service web SOAP ?
    Par lehic dans le forum Bibliothèques et frameworks
    Réponses: 11
    Dernier message: 04/05/2012, 02h37
  2. [Web Service][XMLRPC] Comment lire un tableau côté serveur?
    Par Nixar dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 19/12/2010, 00h09
  3. [Web Service][SOAP] Comment attaquer facilement un service web en PHP ?
    Par lr dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 29/02/2008, 15h29
  4. [Web Service][SOAP] Comment activer l'extension soap (php5) ?
    Par lauryk dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 13/09/2007, 11h57
  5. [Web Service][SOAP] Comment définir un timeout pour une connexion SOAP ?
    Par lehic dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 26/06/2007, 17h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo