[RESOLU] Récupérer les données en php à partir d'un HTTP GET ?

Eléphanteau du PHP | 16 Messages

27 avr. 2016, 11:43

Bonjour à tous, et merci de votre aide,

je cherche à récupérer les données de mes clients à partir d'une API, dans le système "SuperSaaS" (c'est un agenda en ligne) et je ne sais pas comment m'y prendre... Je suis à l'aise en php, mais je n'ai jamais eu à me connecter à une API ni manipuler les données, alors il me manque quelques informations.

Dans le tutorial de SuperSaaS, ils indiquent que l'API est "RESTfull" et qu'on l'utilise avec le protocole HTTP et (GET, POST, PUT, DELETE, etc.).

Ils expliquent qu'on se connecte ainsi :
http://supersaas.com/api/users?account= ... ord=secret
(et ça fonctionne, je vois la liste des users)

et qu'on peut lire tous les users ainsi :
GET /api/users
avec un document XML

Mais comment puis-je récupérer les données dans des variables php, pour pouvoir les utiliser ?

Merci beaucoup,

E.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 avr. 2016, 12:13

Bonjour,

Ça dépend comment sont renvoyées les données par le serveur.
Soit c'est du XML et donc tu peux utiliser SimpleXML et notamment sa fonction simplexml_load_file() qui marche aussi avec des url pour charger un XML et le transformer en objet
https://secure.php.net/manual/fr/functi ... d-file.php

Soit c'est du JSON, et tu peux utiliser file_get_contents() pour récupérer les données puis json_decode() pour récupérer ces données sous la forme d'un objet manipulable en PHP.
https://secure.php.net/manual/fr/functi ... encode.php
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 16 Messages

27 avr. 2016, 12:17

J'ai trouvé dans les tutoriaux du site !!!
la solution est donc, en php :
<?php
$articles_xml = simplexml_load_file('http://www.supersaas.com/api/users?acco ... sword=Pass');
foreach ($articles_xml ->user as $article) {
print "Nom de l'article: {$article->name} <br />\n";
print "Nom de l'article: {$article->fullname} <br />\n";
// là je sais manipuler les variables pour en faire ce que je veux.
}
?>

Il me reste un dernier souci... Ce n'est pas moi qui choisis les noms des champs, c'est l'API de SuperSaaS, et il y a des champs nommés par exemple full-name.
Or, j'ai un message d'erreur avec le caractère "-".
Y a t'il une façon de l'encapsuler ?

Merci,

E.

Eléphanteau du PHP | 16 Messages

27 avr. 2016, 12:43

Sujet résolu !

Merci @rtur de ta réponse rapide,
voici donc la solution :

$articles_xml = simplexml_load_file('http://www.supersaas.com/api/users?acco ... word=passe');
// print_r($articles_xml);
foreach ($articles_xml ->user as $article) {
print $article->{'full-name'}."<br />\n"; // exemple de syntaxe avec un caractère spécial
print $article->name."<br />\n"; // exemple de syntaxe avec un caractère simple
}

Bonne journée !