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

Langage PHP Discussion :

web services soap [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 40
    Points
    40
    Par défaut web services soap
    Bonjour,

    je suis en cours de création d'un webservices (soap)
    je me demandais comment je devais faire pour retourner le résultat au format xml à mon client windev

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Le PHP ne fait que générer ce qu'il retourne.
    Donc header() pour préciser le type de retour (XML dans ton cas) et ensuite suffit de faire du echo pour le XML.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  3. #3
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 40
    Points
    40
    Par défaut
    transgohan,
    si je comprends bien je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    header("Content-Type: text/xml");
    echo  "<id>".$ma_variable."</id>";
    ??

  4. #4
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Euh pas seulement... Ton echo c'est pas un fichier XML là...
    Te manques l'entête du fichier, ainsi que le premier parent.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  5. #5
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 40
    Points
    40
    Par défaut
    en effet ... donc cela devrait fonctionner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    header("Content-Type: text/xml");
    $xml = "<?xml version='1.0' encoding='UTF-8'>";
    $xml .="<user><id>".$numero".</id>";
    $xml .="</user>";	
    echo $xml;
    Merci pour ton aide

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    t’utilises pas SoadServer ?

  7. #7
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 40
    Points
    40
    Par défaut
    stealth35,
    j'utilise bien soap server, mais j'ai un peu de mal à comprendre le fonctionnement
    j'ai fait cela

    Code : 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
    23
    24
    25
    26
    27
    28
    29
     
     
    class Connexion 
    {
     
    	/**
       	 * Connexion
       	 * @param string $login
       	 * @param string $pwd
       	 * @return string
       	 */
       	function connexion($login, $pwd)
       	{
    		//la fonction me ramène un numéro
    		$xml  = "<?xml version='1.0' encoding='UTF-8'?>";
    			$xml .= "<user><id>".$numero".</id>";
    			$xml .= "</user>";					
     
    		}
     
     
     
     
       	}
    }
     
    $server = new SoapServer("http://localhost/connexion.wsdl");
    $server->setClass("Connexion", $xml);
    $server->handle();
    Mais je ne sais pas si je m'y prends bien

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    y'a pas de XML a faire, les classes sont en PHP

  9. #9
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 40
    Points
    40
    Par défaut
    donc si je comprends bien je fais juste mon traitement dans ma fonction
    et ensuite je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $server = new SoapServer("http://localhost/connexion.wsdl");
    $server->setClass("Connexion", $numero);
    $server->handle();
    $numero correspondant à ma valeur que je souhaite retourner

    merci
    waxx

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    tu fais tes classes comme tu les ferais en PHP, t'as pas besoin de mettre le paramètre args (regarde bien la doc de setClass)

    quand le client fera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $client->connexion($login, $password);
    la méthode connexion sera appeler avec les arguments du client

  11. #11
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 40
    Points
    40
    Par défaut
    si t'as un exemple je suis preneur

  12. #12
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 40
    Points
    40
    Par défaut
    il doit y avoir un truc que je ne capte pas
    je ne suis pas dans ma partie client mais serveur
    le serveur est en php et le client sera en windev (;-[ j'ai des contraintes)

    au début j'avais fait cela (cf ci-dessous)
    Code : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <?
    class Connexion 
    {
     
    	/**
       	 * Connexion
       	 * @param string $login
       	 * @param string $pwd
       	 * @return string
       	 */
       	function connexion($login, $pwd)
       	{
    		.....
                    //traitement de ma requete
    			return $obj['numero'];	
     
     
    		}
     
     
     
     
       	}
    }
     
    $server = new SoapServer("http://localhost/connexion.wsdl");
    $server->setClass("Connexion");
    $server->handle();
     
     
    ?>

    j'avais fait un client vite fait en php pour voir le retour, mais je ne l'avais pas en xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $client = new SoapClient(
    	'http://localhost/connexion.wsdl',
    	 array(
    		'wsdl_cache' => 0,
    		'trace' => 1
    	)
    );
     
    try { 
     
    	$con = $client->connexion('nom','mdp');
    	echo $con;
    }
    est ce qu'il y a quelque chose que je loupe coté serveur
    Waxx

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    dans ton WSDL t'as bien l'adresse du serveur ?

    ps : c'est <?php pas <?

  14. #14
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 40
    Points
    40
    Par défaut
    Oui dans mon wsdl j'ai bien l'adresse de mon serveur
    Code : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
     
    <?xml version='1.0' encoding='UTF-8'?>
    <definitions name="server" targetNamespace="urn:server" xmlns:typens="urn:server" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/">
    	<message name="connexion">
    		<part name="login" type="xsd:string"/>
    		<part name="pwd" type="xsd:string"/>
    	</message>
    	<message name="connexionResponse">
    		<part name="connexionReturn" type="xsd:string"/>
    	</message>
     
    	<portType name="ConnexionPortType">
    		<operation name="connexion">
    			<documentation>
    				Connexion
    			</documentation>
    			<input message="typens:connexion"/>
    			<output message="typens:connexionResponse"/>
    		</operation>
     
        </portType>
    	<binding name="ConnexionBinding"
    		type="typens:ConnexionPortType">
    		<soap:binding style="rpc"
    			transport="http://schemas.xmlsoap.org/soap/http" />
     
    		<operation name="connexion">
    			<soap:operation soapAction="urn:ConnexionAction" />
    			<input>
    				<soap:body namespace="urn:server" use="encoded"
    					encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
    			</input>
    			<output>
    				<soap:body namespace="urn:server" use="encoded"
    					encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
    			</output>
    		</operation>
    	</binding>
    	<service name="serverService">
    		<port name="ConnexionPort" binding="typens:ConnexionBinding">
    			<soap:address location="http://localhost/connexion.php"/>
    		</port>
    	</service>
    </definitions>
    et pour le fichier connexion.php, j'ai le code de mon soap_server
    [pour le ps merci erreur en le copiant à la main]

    merci

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    quelle est l'erreur coté client ?

  16. #16
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 40
    Points
    40
    Par défaut
    je n'ai pas d'erreur coté client
    mais j'ai juste le numéro qui s'affiche, alors que je devrais avoir un xml pour pouvoir le parser ensuite

  17. #17
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par waxx59 Voir le message
    je n'ai pas d'erreur coté client
    mais j'ai juste le numéro qui s'affiche, alors que je devrais avoir un xml pour pouvoir le parser ensuite

    ah mais non c'est tout l’intérêt du SOAP, il te renvoie une valeur dans ton langage, le XML c'est juste pour le transport des données, y'a pas a le parser c'est le client qui s'en occupe tout seul

  18. #18
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 40
    Points
    40
    Par défaut
    ok, merci pour toutes ces précisions
    mais dans ce cas pourquoi mon client windev (je m'y mets juste à ce langage)
    me dit que ce n'est pas une enveloppe soap

    bizarre

  19. #19
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    ton serveur est visiblement correct, je te conseil plus d'aller sur le forum de windev pour voir ce qu'il se passe coté client.

  20. #20
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Points : 40
    Points
    40
    Par défaut
    GRAND MERCI stealth35
    pour le temps accordé


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

Discussions similaires

  1. retourner tableau de string avec web service SOAP
    Par xx_FiFty_xx dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 23/06/2008, 10h13
  2. Appels de Web services (SOAP) ?
    Par ovdbc dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 17/10/2007, 11h28
  3. Déploiement web services SOAP sur Websphere 5.1
    Par g_rare dans le forum Websphere
    Réponses: 1
    Dernier message: 19/03/2007, 10h30
  4. web services, soap et compression.
    Par renaudjuif dans le forum Langage
    Réponses: 6
    Dernier message: 31/07/2006, 15h44
  5. [Web Service] [SOAP] Envoie requete
    Par _beber85 dans le forum JDBC
    Réponses: 1
    Dernier message: 08/06/2006, 09h31

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