Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Services Web
Services Web Forum d'entraide pour les services Web en PHP, qui permettent de créer et de consommer facilement des webservices (génération de WSDL etc.). Exemples : SOAP, NuSOAP, REST, SCA-SDO... Avant de poster -> Cours webservices
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/03/2008, 17h06   #1
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
Par défaut [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
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 18h24   #2
Membre éclairé
 
Homme
Développeur Web
Inscription : avril 2004
Messages : 319
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
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 : 319
Points : 325
Points : 325
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
Guybrush113 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2008, 23h12   #3
Membre habitué
 
Inscription : juin 2004
Messages : 296
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juin 2004
Messages : 296
Points : 147
Points : 147
Hello,

Tu peux déjà tester avec soapui.

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

A+
__________________
- Blog
- stages-aikido.fr
kaboume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 10h00   #4
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
Voici mon code pour appeler le webservice :
Code :
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 :
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...
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 10h05   #5
Membre habitué
 
Inscription : juin 2004
Messages : 296
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juin 2004
Messages : 296
Points : 147
Points : 147
Hello,

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

Exemple avec ton code :

Code :
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+
__________________
- Blog
- stages-aikido.fr
kaboume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 10h09   #6
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
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 :
1
2
 
Fatal error: Class 'SoapClient' not found in C:\Program Files\wamp\www\WS\webservice.php on line 30
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 10h13   #7
Membre habitué
 
Inscription : juin 2004
Messages : 296
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juin 2004
Messages : 296
Points : 147
Points : 147
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+
__________________
- Blog
- stages-aikido.fr
kaboume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 10h16   #8
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
Ok merci maintenant les fonctions sont appelées mais avec des messages d'erreurs
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 10h18   #9
Membre habitué
 
Inscription : juin 2004
Messages : 296
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juin 2004
Messages : 296
Points : 147
Points : 147
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+
__________________
- Blog
- stages-aikido.fr
kaboume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 10h22   #10
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
Ah c'est bon ça fonctionne j'avais initialisé comme ça $parametres=""; au lieu de $parametres=array();

Merci
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 10h44   #11
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
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...
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 10h51   #12
Membre habitué
 
Inscription : juin 2004
Messages : 296
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juin 2004
Messages : 296
Points : 147
Points : 147
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+
__________________
- Blog
- stages-aikido.fr
kaboume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 10h58   #13
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
et il existe un moyen de créer les classes coté PHP directement à partir du fichier WSDL ?
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 11h05   #14
Membre habitué
 
Inscription : juin 2004
Messages : 296
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juin 2004
Messages : 296
Points : 147
Points : 147
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+
__________________
- Blog
- stages-aikido.fr
kaboume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 11h05   #15
Membre éclairé
 
Homme
Développeur Web
Inscription : avril 2004
Messages : 319
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
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 : 319
Points : 325
Points : 325
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 :
1
2
3
$retour_ws->var1;
$retour_ws->var2;
...
Guybrush113 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 11h08   #16
Membre du Club
 
Inscription : avril 2006
Messages : 265
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 265
Points : 66
Points : 66
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.
hacksi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h21.


 
 
 
 
Partenaires

Hébergement Web