[Webservice/PHP] Modification d'une fonction soap

Modification d'une fonction soap [Webservice/PHP] - PHP - Programmation

Marsh Posté le 09-11-2005 à 09:35:32    

Bonjour,
voilà j'ai récupérer un webservice utilisant la librairie soap.
 
Le voici:
 
côté client:

Code :
  1. <?
  2. include('lib/nusoap.php');
  3. $client = new soapclient('http://127.0.0.1/Webservice_soap/service_bonjour.php');
  4. $err = $client->getError();
  5. if ($err)
  6.     {
  7.     echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
  8.     }
  9. else
  10.     {
  11.     $parametres = array('prenom'=> Olivier);
  12.     print $client->call('bonjour', $parametres);
  13.     }
  14. ?>


côté serveur:

Code :
  1. <?php
  2. include('lib/nusoap.php');
  3. $serveur = new soap_server;
  4. $serveur->debug_flag=false;
  5. $serveur->register('bonjour');
  6. function bonjour($prenom)
  7.   {
  8.   return "Bonjour $prenom !";
  9.   }
  10. $serveur->service($HTTP_RAW_POST_DATA);
  11. ?>


 
Je souhaite le modifier de façon à entrer manuellement 2 valeurs en parametres au lieu d'entrer le prénom Olivier par défaut.
 
Pour cela je souhaite utiliser un formulaire avec 2 input text (pour entrer mes 2 parametres) et un input submit (pour lancer le webservice):
 
Voici ce que j'ai déjà fait: (à l'aide de question que j'ai posé sur ce forum)
 
Page du formulaire:

Code :
  1. <html>
  2.     <head>
  3.         <title>Page de test de Webservice</title>
  4.     </head>
  5.     <body>
  6.         <p align="center">
  7.             <u><font size="+2">Page de test de Webservice :</font></u>
  8.             <br><br><br><br><br><br>
  9.             <b><u>Formulaire du Webservice de contrôle d acces :</u></b>
  10.             <br><br>
  11.             <form method="post" action="appel_TCA.php" name="formulaire">
  12.                 Numéro de carte :
  13.                 <input type="text" name="num_carte">
  14.                 <br><br>
  15.                 Nom du site :
  16.                 <input type="text" name="site">
  17.                 <br><br>
  18.                 <input type="submit" name="bouton" value="Envoyer">
  19.             </form>
  20.         </p>
  21.     </body>
  22. </html>


côté client :

Code :
  1. <?
  2. include('lib/nusoap.php');
  3. $client = new soapclient('http://127.0.0.1/Webservice_soap/service_TCA.php');
  4. $err = $client->getError();
  5. if ($err)
  6. {
  7.     echo '<h2>Constructor error</h2><pre>' . $err . '</pre>';
  8. }
  9. else
  10. {
  11.     $parametres1 = array($_POST['num_carte']); //1er paramètre provenant de mon formulaire
  12.     $parametres2 = array($_POST['site']); //2ème paramètre provenant de mon formulaire
  13.     // je ne trouve pas ici comment envoyer mes 2 paramètres au serveur :
  14.     print $client->call('bonjour', $parametres1); //envoie que de 1 paramètre, pour 2 je ne sais pas comment faire
  15. }
  16. ?>


côté serveur :

Code :
  1. <?php
  2. include('lib/nusoap.php');
  3. $serveur = new soap_server;
  4. $serveur->debug_flag=false;
  5. $serveur->register('bonjour');
  6. function bonjour($num_carte)
  7.   {
  8.   return "La carte numéro $num_carte tente de badger sur le site num. xxx "; //(ici doit aparraîte mon 2ème paramètre "$site" à la place de xxx)
  9.   }
  10. $serveur->service($HTTP_RAW_POST_DATA);
  11. ?>


 
Voilà mon avancement, comme vous pouver le constater mon problème ce situe au niveau du passage et du traitement de mes 2 paramètres entre le client et le serveur. Il faut certainement modifier la fonction bonjour mais je ne sais pas comment faire (j'aimerai bien aussi la faire changer de nom).
 
J'espère que je ne me suis pas trop étendu et merci par avance de votre aide.


Message édité par Vilo5 le 09-11-2005 à 09:58:36
Reply

Marsh Posté le 09-11-2005 à 09:35:32   

Reply

Marsh Posté le 09-11-2005 à 10:28:38    

Evite de mettre du code PHP quand tu parle de "côté client". Bon on va encore me faire remarqué que je chipote sur les termes mais autant ne pas partir sur le mauvais chemin.
 
Sinon je comprend pas bien ce que tu veux faire....
 
Mais très sincérement, le conseil que je te donne c'est d'aller jeter un oeuil sur la doc, ca t'aidera beaucoup.

Reply

Marsh Posté le 09-11-2005 à 10:57:34    

Bah dans client tu mets:
$param = array('num_carte'=>$_POST['num_carte'], 'site'=>$_POST['site'])
 
et dans serveur:
function bonjour($num_carte,$site)


Message édité par cesarr89 le 09-11-2005 à 10:58:56
Reply

Marsh Posté le 09-11-2005 à 11:29:21    

Merci cesarrr89 c'est tout à fait çà que je voulais.
 
Je suis bête au lieu de modifier le contenu de la variabe $param en :
$param = array('num_carte'=>$_POST['num_carte'], 'site'=>$_POST['site'])  
 
j'essayais un truc dans le style :
$parametres1 = array($_POST['num_carte']);  
$parametres2 = array($_POST['site']);
print $client->call('bonjour', $parametres1,  $parametres2);
 
C'est bon maintenant ca marche, c cool.
 
dwogsi je ne comprend pas ce que tu veus dire par : "Evite de mettre du code PHP quand tu parle de "côté client"."  
Pourquoi ?


Message édité par Vilo5 le 09-11-2005 à 11:29:54
Reply

Marsh Posté le 09-11-2005 à 11:30:58    

dwogsi a écrit :

Evite de mettre du code PHP quand tu parle de "côté client". Bon on va encore me faire remarqué que je chipote sur les termes mais autant ne pas partir sur le mauvais chemin.


 
Dans son cas si. Son code PHP est bien le client du service web [:spamafote]
 
Et le navigateur web est le client du serveur PHP  
 
PHP est à la fois client et serveur ici [:spamafote]


---------------
JE JE SUIS LIBERTINEEEEEEEEEEE JE SUIS UNE CATINNNNNNNNN §§§§§§§§
Reply

Marsh Posté le 09-11-2005 à 11:33:32    

elianor a écrit :

Dans son cas si. Son code PHP est bien le client du service web [:spamafote]
 
Et le navigateur web est le client du serveur PHP  
 
PHP est à la fois client et serveur ici [:spamafote]


 
Bon je viens de relire son post avec plus d'attention et on peut efectivement voir les choses souos cet angle. Alors je dirais : Autant pour moi et je ferais plus attention la prochaine fois avant de parler.

Reply

Marsh Posté le 09-11-2005 à 11:48:18    

dwogsi a écrit :

Bon je viens de relire son post avec plus d'attention et on peut efectivement voir les choses souos cet angle. Alors je dirais : Autant pour moi et je ferais plus attention la prochaine fois avant de parler.


 
Ok maintenant je comprend pourquoi tu parlais de çà.
je comprend un peu près la ou tu voulais en venir, mais comme tu le dit ca ne concerne pas mon appli.
 
En tout cas merci de t'être penché aussi sur mon pb.

Reply

Marsh Posté le 09-11-2005 à 16:14:32    

Voilà ce que cela donne.
 
Page du formulaire :

Code :
  1. <html>
  2.     <head>
  3.         <title>Page de Webservice</title>
  4.     </head>
  5.     <body bgcolor=#f2faf5>   
  6.         <p align="center">
  7.             <font face="Comic Sans MS" size="+2" color="#0080FF"><b>Page de Webservice</b></font>
  8.             <br><br><br><br><br><br>
  9.             <b><u>Formulaire du Webservice de contr&ocirc;le d&acute;acc&egrave;s :</u></b>
  10.             <br><br><br>
  11.             <form method="post" action="appel_CA.php" name="formulaire">
  12.                 <table border="1">
  13.                     <tr>
  14.                         <td>
  15.                             Numéro de carte :
  16.                         </td>
  17.                         <td>
  18.                             <input type="text" name="num_carte">
  19.                         </td>
  20.                         <td rowspan="3">
  21.                             <img src="tca.jpg">
  22.                         </td>
  23.                     </tr>
  24.                     <tr>
  25.                         <td>
  26.                             Nom du site :
  27.                         </td>
  28.                         <td>
  29.                             <input type="text" name="site">
  30.                         </td>
  31.                     </tr>
  32.                     <tr>
  33.                         <td colspan="2" align = "center">
  34.                             <input type="submit" name="bouton" value="Envoyer">
  35.                         </td>
  36.                     </tr>
  37.                 </table>
  38.             </form>
  39.         </p>       
  40.     </body>
  41. </html>


Côté client :

Code :
  1. <?
  2. include('lib/nusoap.php');
  3. $client = new soapclient('http://127.0.0.1/Webservice_soap/service_CA.php');
  4. $err = $client->getError();
  5. if ($err)
  6. {
  7.     echo '<h2>Erreur de construction</h2><pre>' . $err . '</pre>';
  8. }
  9. else
  10. {
  11.     $parametres = array('num_carte'=>$_POST['num_carte'], 'site'=>$_POST['site']);
  12.     print $client->call('CA', $parametres);
  13. }
  14. ?>


Côté serveur :

Code :
  1. <?php
  2. include('lib/nusoap.php');
  3. $serveur = new soap_server;
  4. $serveur->debug_flag=false;
  5. $serveur->register('CA');
  6. function CA($num_carte, $site)
  7. {
  8.   return "La carte numéro <b>$num_carte</b> tente de badger sur le site <b>$site</b>";
  9. }
  10. $serveur->service($HTTP_RAW_POST_DATA);
  11. ?>


 
Merci de votre aide !


Message édité par Vilo5 le 09-11-2005 à 16:16:50
Reply

Marsh Posté le 09-11-2005 à 16:29:37    

Bon ceci est pour le moment un webservice de test, pour simuler mon futur webservice qui permettra de faire du contrôle d'accès.
Je m'explique lorsqu'un employé tentera d'accéder à un site de la société en se badgeant avec une carte à puce il interrogera alors mon webservices.
 
Plutard les variables "$num_carte" et "$site" du client viendront donc du lecteur de carte (contenant un programme en C). Il n'y aurra donc plus de formulaire, "$num_carte" permettra de détecter qui est l'employé et "$site" le site de la société auquel il tente d'acceder.
 
Il me faudra donc du côté client à la place de retrourner :
return "La carte numéro <b>$num_carte</b> tente de badger sur le site <b>$site</b>";
interroger une base de donner pour savoir si l'employé a le droit d'acceder au site ou non. Je renverrai alors "1" o "0" au client ce qui aurra pour effet d'ouvrir ou non la porte à l'employé.
Voilà mais cette partie sera faite plus tard.
 
Maintennant que vous savez tout je voudrai savoir comment envoyer mes paramètre via l'url, du style : http://127.0.0.1/Webservice_soap/service_CA.php?$param   (ca doit être un truc dans le genre)
Et surtout savoir comment modifier mon prog pour qu'il fonctionne de cette manière.
 
Voilà comme ca j'aurai un prog digne du non de webservice


Message édité par Vilo5 le 09-11-2005 à 16:41:31
Reply

Marsh Posté le 09-11-2005 à 16:46:36    

Url : http://www.machin.ext/page.php?var=machin
Dans le script : $_GET["var"]


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 09-11-2005 à 16:46:36   

Reply

Marsh Posté le 09-11-2005 à 18:35:08    


 
Je ne comprend pas exactement de quoi tu parle.
 
Quel script, a quel endroit?

Reply

Marsh Posté le 09-11-2005 à 18:39:50    

Je me pose juste une simple question, tu sais faire du PHP ?
Le doute m'envahit quand même...

Reply

Marsh Posté le 09-11-2005 à 19:38:23    

cesarr89 a écrit :

Je me pose juste une simple question, tu sais faire du PHP ?
Le doute m'envahit quand même...


 
Bein si je pose des questions c'est que je ne suis pas très doué en php, c'est évident.
 
Je débute, j'ai commencé par utiliser 1 ou 2 script pour agrémenté mes premiers essais de sites web html. Je me suis ensuite essayé au forum avec phpbb2 et maintenant j'admin un forum.
 
Mais bon voilà ca c'est pas grand chose c'est juste de la manipulation de script existant, je n'ai donc pas vraiment de connaissance php.
 
Et maintenant je dois faire du php au boulot, je dévelloppe donc réellement en php pour la 1ère fois, d'ou mes questions qui peuvent paraitre parfois un peu con.
 
Voilà dsl, mais les forums sont fait pour çà, c'est comme ca qu'on apprend.
 
Ceci dit mes connaissances dans d'autre langage me permette de comprendre un peu le code php.

Reply

Marsh Posté le 10-11-2005 à 10:36:38    


 
C'est bon ca marche, je faisais juste une petite erreur.
http://.../service_CA.php?num_carte=52&site=toto
 
moi je faisait ca a la place :
http://.../service_CA.php?num_carte=52?site=toto
 
Merci.


Message édité par Vilo5 le 10-11-2005 à 10:37:44
Reply

Marsh Posté le 10-11-2005 à 10:45:06    

Maintenant que mon webservices de tet est créé, il va me falloir réaliser le vrai.
 
Pour cela je vais devoir réalisé le client en C (et oui "dwogsi" ca rejoins ce que tu me disai, t'avais raison ;)), qui se trouvera sur une plateform client embarqué sous µClinux.
 
Si j'ai bien compris il va me falloir utilisé la librairie gsoap et utiliser un WSDL.
 
Mais je ne sais pas par ou commencer, que faut t'il que je fasse ? Et est-ce que je pourrai garder mon client PHP tel qu'il l'est actuelement.

Reply

Marsh Posté le 14-11-2005 à 12:37:19    

Bah si tu fais un client en C pourquoi veut tu garder le client PHP?
Il faut juste connecter ton client en C au WebService PHP.

Reply

Marsh Posté le 14-11-2005 à 23:36:14    

cesarr89 a écrit :

Bah si tu fais un client en C pourquoi veut tu garder le client PHP?
Il faut juste connecter ton client en C au WebService PHP.


 
Merde, désolé c'est exactement ce que je voulé dire.
Dans ma dernière phrase je voulé dire :Et est-ce que je pourrai garder mon Serveur PHP (et non pas mon client) tel qu'il l'est actuelement.
 
Désolé j'ai tappé trop vite.
 
Donc je reformule ma question:
 
Maintenant que j'ai réalisé un webservice de test un peu bizarre (à savoir le client et le serveur en PHP), je voudrai faire la version final de mon webservice.
C'est à dire remplacer le client php en par un client C (qui tounera sous µlinux), tout en gardant mon serveur php tel qu'il l'ai actuellement.
 
Je cherche donc de l'aide pour remplacer mon cllient php par un client C. Je crois qu'il faut utliser gsoap mais je suis pas sure et peut etre même wsdl.


Message édité par Vilo5 le 14-11-2005 à 23:38:16
Reply

Marsh Posté le 26-11-2005 à 19:31:55    

Et bien je peux juste te dire(car moi aussi je me penche sur le probleme depuis peu) que le fichier wsdl et en fait la déclaration de tes fonctions accessible par le client sur ton serveur avec leur entrée et sortie.
 
Sinon gsoap je connais pas car je fait tout en php pour l'instant.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed