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 07/08/2007, 09h45   #1
Invité de passage
 
Inscription : juillet 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 6
Points : 1
Points : 1
Par défaut [SOAP] Client de Web Service en PHP

Bonjour,
Je possède un service web écrit en Java, il fonctionne parfaitement avec un client écrit en Java.
J'ai écrit un client en PHP mais là j'ai un souci : toutes les variables que j'envoie au service web deviennent "null". Il n'y a pas d'erreurs, sauf quand j'envoie des entiers (là c'est le serveur Java qui coince).

Voici le code du client PHP :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
<?php
	ini_set("soap.wsdl_cache_enabled", "0");
 
	$clientSOAP = new SoapClient("http://130.98.172.114:8080/DeployWebService/services/ReceptionWS?wsdl", array('trace' => 1));
 
	$var = 'test test';
 
	$clientSOAP->__soapCall('connexion', array($var));
	echo 'RESPONSE: ' . $clientSOAP->__getLastResponse();
?>
J'utilise Wamp 5 (donc PHP5) pour le client PHP et Eclipse WTP pour le service Web pour le moment. SOAP est activé dans PHP.
Senki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 09h50   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
C'est normal le ? dans l'url vers ton wsdl?
Citation:
Code :
	$clientSOAP = new SoapClient("http://130.98.172.114:8080/DeployWebService/services/ReceptionWS?wsdl", array('trace' => 1));
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 10h05   #3
Invité de passage
 
Inscription : juillet 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 6
Points : 1
Points : 1
C'est une méthode pour accéder au wsdl à distance sur une autre machine. Mais j'ai testé aussi avec une adresse fixe :

Code :
$clientSOAP = new SoapClient("./reception.wsdl", array('trace' => 1));
ou

Code :
$clientSOAP = new SoapClient("http://localhost/test2/reception.wsdl", array('trace' => 1));
Le résultat est le même
Senki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 10h10   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Code :
1
2
	$clientSOAP->__soapCall('connexion', array($var));
	echo 'RESPONSE: ' . $clientSOAP->__getLastResponse();
ajoutes :
Code :
echo 'REQUEST: ' . $clientSOAP->__getLastRequest();
et vérifies que la requete est bien formée aussi
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 10h15   #5
Invité de passage
 
Inscription : juillet 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 6
Points : 1
Points : 1
Ah en effet le problème vient de là : il ne met met rien après le "REQUEST:".
Senki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 10h20   #6
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Les webservices sont quelque chose de très puissant quand on l'a compris mais c'est assez obscur au début (et ca l'est toujours pour moi alors que j'en ai codé deux qui fonctionnent ).
La solution que j'ai adopté est de mettre des echo a peu pres partout... en gros quand je rentre dans des if/else, quand j'envoie une requete SOAP ou quand j'en recois une, etc. Coté serveur il faut donc que tu affiches ce que tu reçois, comme requete, idem coté client, jusqu'à ce que tu trouves ce qui bugge. Je pense aussi qu'il serait plus simple pour toi (le temps des tests) de tout faire en PHP, aussi bien le client que le serveur, ca te permettra de comprendre ce qui se passe coté serveur aussi.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 10h26   #7
Invité de passage
 
Inscription : juillet 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 6
Points : 1
Points : 1
Ok merci de ton aide, je vais voir d'où vient le problème =)

D'ailleurs j'ai ma petite idée sur ce qui ne fontionne pas : Eclipse : j'ai testé en déployant sur Apache une autre fontion et ça a l'air de marcher.
Senki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2009, 16h28   #8
Invité régulier
 
Inscription : février 2009
Messages : 16
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 16
Points : 5
Points : 5
Bonjour,

j'ai le même soucis, j'ai créer des services web en java et je souhaite y accéder via un client php5.

Je ne peux appeler que les services qui ne prennent pas de paramètres. Des qu'ils y a passage de paramètre j'ai une erreur m'expliquant que je n'ai pas fournit de paramètre.

Comment as tu résolue ton problème s'il te plait ?

(Les services web sont crées à partir d'éclipse)
Indoril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2009, 11h24   #9
Invité régulier
 
Inscription : février 2009
Messages : 16
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 16
Points : 5
Points : 5
Bon pour ceux que sa intéresse j'ai réussi à me débrouiller.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
$wsdl='http://localhost:8080/WebServiceTest/services/Hello?wsdl';
$client = new soapclient($wsdl);
//création du client
$param->name = "test";
$temp = $client->sayHello($param);
print_r($temp);
echo $temp->sayHelloReturn;
//appel du WS avec un string en paramètre, c'est $param qui fais passer le paramètre $param->Le nom du paramètre dans le wsdl
echo "<br>";
$temp = $client->hello();
print_r($temp);
echo $temp->helloReturn;
//exemple sans paramètre
echo "<br>";
$param->a = 1;
$param->b = 2;
$temp = $client->addition($param);
echo $temp->additionReturn;
//exemple avec deux paramètre
Indoril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 11h23   #10
Invité de passage
 
Homme
Etudiant Ingénieur
Inscription : avril 2011
Messages : 18
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Maroc

Informations professionnelles :
Activité : Etudiant Ingénieur
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : avril 2011
Messages : 18
Points : 4
Points : 4
j'utilise netbeans ou j'ai cree mon propre web service en java et j'essai d'y acceder depuis un client php mais je n'arrive pas a appelé les méthodes dont les parametre sont des string et merci
satrucci 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 08h44.


 
 
 
 
Partenaires

Hébergement Web