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] Utilisation d'un webservice


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 268
    Points : 101
    Points
    101
    Par défaut [Web Service][SOAP] Utilisation d'un webservice
    Bonjour,

    Voila j'ai créé un webservice en java qui génère automatiquement un fichier WSDL, et je voudrais faire un client en php pour le tester...

    Voila quelqu'un peut-il m'aider ?
    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Salut à toi.

    Ton WebService utilise-t-il les requetes SOAP ?
    Vas-tu faire ce client avec PHP 5 ou une version inférieure ?

    SOAP + PHP5 = fonctions natives de PHP
    http://classes.scriptsphp.org/articl...e-web-en-php-5
    http://devzone.zend.com/node/view/id/689

    SOAP + PHP 4 et moins = Librairie NuSOAP
    Jamais utilisé, donc pas de lien, mais l'utilisation est très similaire que les fonctions SOAP de php5.

    Bon courage

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Points : 194
    Points
    194
    Par défaut
    Hello,

    Tu peux déjà tester avec soapui.

    Cf. http://www.ericmery.fr/blog/category/php-soap/

    A+

  4. #4
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 268
    Points : 101
    Points
    101
    Par défaut
    Voici mon code pour appeler le webservice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    include("lib/nusoap.php"); 
     
    $client = new SoapClient("http://127.0.0.1:8080/Serveur/*****?wsdl");
     
    print($client->getHelloWorld());
    et voici le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Call to undefined method soapclient::getHelloWorld() in C:\Program Files\wamp\www\WS\webservice.php on line 28
    Voila je ne comprends pas pourquoi car la method detHelloWorld existe bien dans le webservice...

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Points : 194
    Points
    194
    Par défaut
    Hello,

    Si tu es sur PHP5, je te conseille vraiment d'utiliser les fonctions natives :

    Exemple avec ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Instanciation du client
    $client = new SoapClient('http://127.0.0.1:8080/Serveur/*****?wsdl',array('trace'=> 1,'soap_version'=> SOAP_1_1));
     
    // appel de la méthode getHelloWorld
    $retour_ws =  $client -> __call('getHelloWorld', array($parametres));
    A+

  6. #6
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 268
    Points : 101
    Points
    101
    Par défaut
    Tu entends quoi par native, car je suis bien en PHP 5 mais si je met le code que tu viens de me donner sans aucun include ça me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Class 'SoapClient' not found in C:\Program Files\wamp\www\WS\webservice.php on line 30

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Points : 194
    Points
    194
    Par défaut
    Y faut que tu active l'extension SOAP quand même.

    Si t'es sur Windows, décommente l'option dans le PHP.INI, si t'es sous Linux, il faut que tu recompile avec l'option SOAP (--enable-soap).

    A+

  8. #8
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 268
    Points : 101
    Points
    101
    Par défaut
    Ok merci maintenant les fonctions sont appelées mais avec des messages d'erreurs

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Points : 194
    Points
    194
    Par défaut
    cool, c'est surement du aux paramètres de ta web method qui n'en n'attend aucun alors que dans mon code, j'ai mis $parametres.

    A+

  10. #10
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 268
    Points : 101
    Points
    101
    Par défaut
    Ah c'est bon ça fonctionne j'avais initialisé comme ça $parametres=""; au lieu de $parametres=array();

    Merci

  11. #11
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 268
    Points : 101
    Points
    101
    Par défaut
    Ah il y a une piège chinois lol.
    Comment je fais quand mon webservice me renvoie un objet d'une classe créée pour le webservice...

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Points : 194
    Points
    194
    Par défaut
    Ben, normalement ca ne pose pas de problème.

    Il faut au préalable que tu crée ta classe côté PHP correspondant à ta classe de l'autre côté.

    Et quand tu récupères ton résultats, ton instancie ta classe.

    Au pire fais un var_dump de la réponse SOAP et affiche le.

    A+

  13. #13
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 268
    Points : 101
    Points
    101
    Par défaut
    et il existe un moyen de créer les classes coté PHP directement à partir du fichier WSDL ?

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    306
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 306
    Points : 194
    Points
    194
    Par défaut
    euh connait pas masi ça doit sûrement exister.

    Si tu trouves, je suis preneur.

    Moi, à chaque fois je les ai réécrites (que les attributs des classes, les méthodes pas la peine).

    A+

  15. #15
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Citation Envoyé par hacksi Voir le message
    Comment je fais quand mon webservice me renvoie un objet d'une classe créée pour le webservice...
    Si dans ta réponse c'est une simple classe, il y a pas besoin de créer la classe en PHP.

    T'as accès à tes paramètres de retour dans ton "$retour_ws". Tu chopes une classe par défaut (StdClass), mais tu accèdes au valeurs comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $retour_ws->var1;
    $retour_ws->var2;
    ...

  16. #16
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 268
    Points : 101
    Points
    101
    Par défaut
    Ouai bah je pense que je ne vais pas me prendre la tête c'était juste pour tester le webservice depuis un autre langage. J'ai la réponse SOAP qui est bonne donc ça va.
    Mais si quelqu'un connait un moyen de générer les classes automatiquement à partir du fichier wsdl je suis preneur aussi

    Je créé un nouveau sujet pour le génération automatique du client.

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

Discussions similaires

  1. Utiliser un objet dans un Web Service Soap Client
    Par benny-blanco dans le forum Services Web
    Réponses: 1
    Dernier message: 19/04/2012, 09h23
  2. Réponses: 4
    Dernier message: 18/04/2012, 21h39
  3. [Tutoriel] Utilisation du web service SOAP sous Android
    Par David55 dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 28/08/2011, 12h07

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