serveur php en webservice

Répondre
mtni
le 28/03/2010 à 16:36
mtni
salut,
je veux faire serveur en webservice qui permet la vérification de login et mot de passe entrés par des clients qui
n´utilisent pas le php.
mais pour le moment je bloque,et je trouve dans le net que la partie client.
Mon problème est comment accéder a la base de données.et comment faire la vérification ?
j´ai une idee parfaite comment manipuler la bd sans webservice.
mais la,je me demande s´il s´agit de la meme chose ou dois je implémenter autrement.
LA GLOBULE
le 29/03/2010 à 00:35
LA GLOBULE
Accéder à la base ??? Ben c'est ton site qui y accède. C'est pareil qu'une page web.

En fait, tu reçois des paramètres (en GET ou en POST), et en fonction de ca, ta page affiche un résultat en texte, en XML, en json, en SOAP, en ce que tu veux.

Ce n'est pas plus compliqué que ca un "webservice".
mtni
le 29/03/2010 à 15:52
mtni
Une petite question.les paramètres que je vais recevoir ce sont d´un client mobile c a d d´une autre plateforme,j´utilise quand meme le GET ou le POST?

Oui je sens que c´est pas aussi compliquè que ça le webservice :D

STP si t´as des codes source ou des liens ou des tutoriels concernant ce sujet,c´est possible de me les passer?
Pour le moment je ne trouve que des tuto pour un webservice pour un Client et moi je cherche a faire un serveur basée sur
l´architecture des WS.
LA GLOBULE
le 29/03/2010 à 16:07
LA GLOBULE
Ben si ton webservice est accessible uniquement via le protocole http (port 80), tu n'as pas le choix, le protocole imposera à tes clients de passer tes paramètres soit en GET, soit en POST, soit dans le body d'une requête.

Après, si tu utilises un autre protocole (le tien que tu crées ou un autre), les clients n'auront pas le choix : ils devront aussi respecter le protocole que tu utilises.


Sinon, je n'ai pas de code source à ce sujet, mais c'est tellement basique que je me vois mal faire un tuorial la dessus.

Genre :

server.php
<?php
if (isset($_GET['action'])) {
if ($_GET['action'] == 'donne_moi_la_meteo_du_jour') {
// la, tu fais le code qui affiche la météo du jour soit texte, en XML, en ce que tu veux
}
elseif ($_GET['action'] == 'donne_moi_les_numeros_du_loto_du_jour') {
// la, tu fais le code qui affiche les numéros du loto du jour soit texte, en XML, en ce que tu veux
}
}
?>


Et donc dans le premier cas, le client appellera http://www.site.com/server.php?action=donne_moi_la_meteo_du_jour et il recevra la météo du jour.
C'est tout, c'est pareil qu'un site web.
mtni
le 30/03/2010 à 17:42
mtni
j´ai fais une fonction qui permet
l´affichage des parameteres.mais le wsdl ne s´affiche pas m´indiquant cette erreur:
Below is a rendering of the page up to the first error.

et d´autres erreurs genres:
Creating default object from empty value


Function ereg() is deprecated


pour le moment j´arrive pas a supprimer ces erreurs,je vous ai mis le code en esperant que vous pouvez m´aider :)



voici mon code :


<?php
include('connexion.php');



//ma fonction
function getParametresClient($login,$pwd) {
$rq_para = mysql_query("SELECT * FROM authentification
WHERE user= $login

and pwd= $pwd");
while($para = mysql_fetch_array($rq_para)){
$tab_para = array();

$CodeC = $para['CodeclientP'];
$tab_para[]=$CodeC;

$username = $para['user'];
$tab_para[]=$username;

$password = $para['pwd'];
$tab_para[]=$password;

$mail = $para['mail'];
$tab_para[]=$mail;

$Adsl = $para['adsl'];
$tab_para[]=$Adsl;

$Debit = $para['debit'];
$tab_para[]=$Debit;

$DateService = $para['DateServ'];
$tab_para[]=$DateService;

$tel = $para['Tel'];
$tab_para[]=$tel;



}
return $tab_para;
}
require_once('lib/nusoap.php');
// Création du service
$server = new soap_server;

// Initialize WSDL support
$server->configureWSDL("Service", 'http://localhost/Service.php');

//define complex types for returned array of clientP information
$server->wsdl->addComplexType(
'clientP',
'complexType',
'struct',
'all',
'',
array(
'CodeC' => array('name'=>'CodeC','type'=>'xsd:int'),

'username' => array('name'=>'username','type'=>'xsd:string'),

'password' => array('name'=>'password','type'=>'xsd:string'),

'mail' => array('name'=>'mail','type'=>'xsd:string'),

'Adsl' => array('name'=>'Adsl','type'=>'xsd:string'),

'Debit' => array('name'=>'Debit','type'=>'xsd:string'),

'DateService ' => array('name'=>'DateService ','type'=>'xsd:string'),

'tel' => array('name'=>'tel','type'=>'xsd:string')) );



// Enregistrement de la méthode
$server->register('getParametresClient', // method name
array('login' => 'xsd:string','pwd' => 'xsd:string'), // input parameters
array('return' => 'tns:clientP'), // output parameters
'http://localhost/Service', // namespace (espace de nommage unique)
'http://localhost/Service.php#getParametresClient', // soapaction (fonction)
'rpc', // style
'encoded', // use
'para clientP' // documentation
);

// Invoque le service
$requete_HTTP_brute = (isset($HTTP_RAW_POST_DATA)?$HTTP_RAW_POST_DATA:'');
$server>service($requete_HTTP_brute);
?>
mtni
le 30/03/2010 à 17:49
mtni
je me suis rendu compte que j´ai mis la fausse table et g pas change le type des parametres dans le addComplexType.je viens de les corriger maintenant,mais les erreurs ne disparaissent pas :(
LA GLOBULE
le 31/03/2010 à 20:30
LA GLOBULE
Pour la première erreur, c'est que tu formates mal ton XML (qui est le XSDL).
En fait, dans les URL que décrit ton WSDL, il ne faut pas mettre des & pour les paramètres mais l'entité HTML &amp;

Pour la seconde erreur, c'est une NOTICE de PHP.
L'erreur vient de NuSOAP je présume : il s'agit d'une vieille vieille lib pour faire du SOAP, elle n'est pas PHP 5 compliant je crois.
Essaye de repérer la ligne ou cela se produit, mais il semblerait que ce soit un problème d'initialisation d'un objet PHP.
Je pense que dans NuSOAP, juste à la ligne de cette erreur, il doit y avoir un bout de code qui doit accéder à une propriété d'un objet genre $toto->polom alors que $toto n'a pas été défini.

Genre pour initiliaser un objet vide proprement, tu peux faire (juste avant le code qui claque l'erreur) :

<?php
$toto = (object) null;
?>


Pour la fonction ereg.
Cette fonction est deprecated, sous entendu il faut faire en sorte de ne plus l'utiliser. Utilise preg_match à la place (la encore, je pense que c'est NuSOAP qui l'utilise).

Bref, comme tu dois t'en rendre compte, NuSOAP était pratique à l'époque de PHP 4, mais aujourd'hui, ce n'est pas la joie.
Heureusement, en PHP 5, il existe des lib natives qui font du SOAP.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours