Webservice Smartping - Page 17

Mardi 11 Août 2015 18:43

tu avais certainement oublié de mettre les guillemets autour de l'ID et du mot de passe.
un autre exemple (en utilisant les 3 fonctions de l'exemple précédent).
il suffit de changer le n° du club pour avoir le classement de chacune des équipes de ton club
le reste est de la mise en page.

// ------------------------------------
if (initialisationAPI() == 1) {
$numeroClub = "03400002";
$s = "";
$param = 'numclu='.$numeroClub.'&type=M';
$result1 = connexionAPI('xml_equipe', $param);
$equipes = simplexml_load_string($result1);
foreach($equipes as $value)
{
$libequipe = $value->libequipe;
$libdivision = $value->libdivision;
$lienPouleDivision = $value->liendivision;
$s .= "$libequipe / $libdivision </br>";
$result2 = connexionAPI('xml_result_equ', 'action=classement&auto=1&'.$lienPouleDivision);
$classements = simplexml_load_string($result2);
foreach($classements as $value)
{
$poule = $value->poule;
$clt = $value->clt;
$equipe = $value->equipe;
$joue = $value->joue;
$pts = $value->pts;
$s .= "$clt $equipe $joue $pts</br>";
}
$s .= "</br>";
}
$s .= "</br>";
echo $s;
} else {
echo "connexion impossible aux API FFTT";
}
Message modifié 3 fois, dernière modification Mardi 11 Août 2015 18:50 par mimi40

Mercredi 12 Août 2015 13:54

Citation de mimi40 :
tu avais certainement oublié de mettre les guillemets autour de l'ID et du mot de passe.
un autre exemple (en utilisant les 3 fonctions de l'exemple précédent).
il suffit de changer le n° du club pour avoir le classement de chacune des équipes de ton club
le reste est de la mise en page.

// ------------------------------------
if (initialisationAPI() == 1) {
$numeroClub = "03400002";
$s = "";
$param = 'numclu='.$numeroClub.'&type=M';
$result1 = connexionAPI('xml_equipe', $param);
$equipes = simplexml_load_string($result1);
foreach($equipes as $value)
{
$libequipe = $value->libequipe;
$libdivision = $value->libdivision;
$lienPouleDivision = $value->liendivision;
$s .= "$libequipe / $libdivision </br>";
$result2 = connexionAPI('xml_result_equ', 'action=classement&auto=1&'.$lienPouleDivision);
$classements = simplexml_load_string($result2);
foreach($classements as $value)
{
$poule = $value->poule;
$clt = $value->clt;
$equipe = $value->equipe;
$joue = $value->joue;
$pts = $value->pts;
$s .= "$clt $equipe $joue $pts</br>";
}
$s .= "</br>";
}
$s .= "</br>";
echo $s;
} else {
echo "connexion impossible aux API FFTT";
}


Merci pour l'exemple, d'ailleurs je suis en train de faire les poules et feuilles de matchs là Content

Jeudi 13 Août 2015 14:38

Citation de Macbernie :
Salut gandalf,
Il me semble bien que;
- les joueurs de la base classement sont l'ensemble des pongistes licenciés à la FFTT, donc tout ceux accessible sur fftt.com section sportif.
- les joueurs spid sont les joueurs ayant une fiche de créée sur spid. Chose que le président (ou le correspondant, ou un autre...) effectue lors de la création des licences.
Donc les deux API devraient retourner sensiblement la même chose, mais la base classement doit être plus fournit que la base spid.


Merci pour le retour. J'ai reçu mes identifiants et je recommande plutôt l'utilisation de xml_joueur_o pour sa liste de licenciés donc la base SPID.On retrouve les joueurs ayant muté par exemple dans l'autre liste.

Autre question ou point :
Comment obtenir les informations concernant les "Autres rencontres" ?. Quand on demande la liste des poules pour une division, on reçoit bien la liste des poules A, B, C .... mais rien sur la poule "Autres Rencontres" qui sert pour les barrages ou les titres par exemple.

Merci.
Message modifié 1 fois, dernière modification Jeudi 13 Août 2015 14:39 par gandalf

Jeudi 13 Août 2015 14:51

Bonjour
Tant que le responsable de l'organisme concerné n'a pas effectué le paramétrage dans SPID de "Autres rencontres" il est normal qu'il n'y ait pas de retour.

Jeudi 13 Août 2015 15:03

Citation de mimi40 :
Bonjour
Tant que le responsable de l'organisme concerné n'a pas effectué le paramétrage dans SPID de "Autres rencontres" il est normal qu'il n'y ait pas de retour.


Ma question porte plutôt sur comment obtenir le cx_poule qui est associé à "Autres rencontres". Quand on consulte les poules sur le site de la FFTT, on voit bien qu'il y a un cx_poule spécifique. Que le résultat soit vide, c'est effectivement normal pour le moment.

Jeudi 13 Août 2015 15:48

effectivement pour une division donnée l'identifiant cx_poule n'est pas retourné pour "Autres rencontres" alors qu'il existe bien sur le site de la FFTT !!!

Mardi 18 Août 2015 16:41

Merci mimi40 pour le partage. Grâce à toi, ça sera plus facile d'adapter la classe de SMGbab16 s'il ne le fait pas avant ^^

Mercredi 19 Août 2015 09:34

crab38 si tu as besoin d'un coup de main, tu demandes

Mercredi 19 Août 2015 13:48

Pas de soucis pour le moment, je reprends fonction par fonction la class de SMGbab16 (avec les même nom de fonctions) histoire d'avoir juste à modifier la classe sans toucher aux appels derrière. J'en suis à 33% de réalisé pour le moment. Et en plus, c'est intéressant à faire ^^
Mais en cette période de vide de donnée, dur de vérifier le bon fonctionnement :/

Mais en tout cas, tu m'as permis de gagner énormément de temps !!!

Dimanche 23 Août 2015 16:07

Bonjour tout le monde, je viens de me lancer dans l'aventure, pas encore avec succès.

J'ai commencé par essayer la phase d'initialisation selon ma compréhension mais sans grand succès, alors j'ai essayé le code proposé (la fonction initialisationAPI()), mais toujours sans réussite. Je pense avoir fait attention aux guillemets pour mes identifiants.
Le problème semble concerner principalement la fonction file_get_contents qui ne retourne rien puisque l'erreur suivante est détectée lors de l'exécution de loadXML :
Warning: DOMDocument::loadXML(): Empty string supplied as input
Pour info aussi, ini_get('allow_url_fopen') renvoie bien 1 dans mon cas, ce qui tendrait à confirmer que mon serveur m'autorise à utiliser file_get_contents avec une URL.
Donc toute idée est bienvenue pour me dépanner ou me donner des pistes Clin d'oeil

D'autre part, le timestamp préparé (en ms) dans initialisationAPI() ne me semble pas conforme à la spécification. Par exemple, j'ai celui-ci : 1440335686324. Il n'est pas conforme au format qui préconise de commencer par 201508...
Ca n'a peut être pas une grande importance puisque certains semblent réussir en utilisant cette fonction, mais bon... si un jour la FFTT décide de faire un check sur le format du timestamp, j'ai peur que la fonction cesse de fonctionner.
Pour info, j'avais utiliser la méthode suivante pour obtenir un timestamp dans le format souhaité (en trichant un peu sur les millisecondes) :
$timestamp = date("YmdHis"Clin d'oeil;
$timestamp = $timestamp."000"; // YYYYMMDDHHMMSSmmm

Enfin, le champ "serie" n'est pas très clair je trouve. Peut-on (ou Faut-il) en changer à chaque fois que l'on fait une requête ?
Mon sentiment était qu'il fallait en déterminer une valeur pour une application donnée (dans mon cas une seule application pour mon site donc une seule valeur), et n'appeler xml_initialisation qu'une seule fois (aujourd'hui par exemple, et plus jamais ensuite).

Dimanche 23 Août 2015 18:58

Bonjour Toon
Tu n'es pas le seul à tâtonner et c'est après de multiples essais que j'ai réussi à sortir quelque chose

1 - la fonction random_str() qui donne le n° de série aléatoire a été prise sur ce site.

function random_str($nbr) {
$str = "";
$chaine = "abcdefghijklmnpqrstuvwxyABCDEFGHIJKLMNOPQRSUTVWXYZ0123456789";
$nb_chars = strlen($chaine);

for($i=0; $i<$nbr; $i++) {
$str .= $chaine[ rand(0, ($nb_chars-1)) ];
}

return $str;
}

2 - pour tester l'initialisation tu peux essayer ceci

$serie = random_str(15);
$cle = md5(API_MDP);
$tm = round(microtime(true)*1000); // timestamp en ms
$tmEntier = sprintf("%.0f", $tm); // pour ne pas avoir de notation scientifique
$tmc = hash_hmac("sha1",$tmEntier,$cle); // timestamp codé
$chaine = 'http://www.fftt.com/mobile/pxml/xml_initialisation.php?serie='.$serie.'&tm='.$tmEntier.'&tmc='.$tmc.'&id='.API_ID;
echo $chaine;
$result = file_get_contents($chaine);
echo $result;

ne pas oublier les guillemets autour de API_MDP et API_ID
microtime() retourne le timestamp Unix, avec les microsecondes. Cette fonction est uniquement disponible sur les systèmes qui supportent la fonction gettimeofday().

le timestamp

sur la convention il est indiqué:
"Récupérer le timestamp (« tm » dateheuresys() ) au format année(4)+mois(2)+jour(2)+heure(2)+minutes(2)+secondes(2)+millièmes(3) (YYYYMMDDHHMMSSmmm)."

mais ce n'est pas la définition du timestamp que l'on trouve dans la documentation de PHP. Pour le moment je m'en tiens à la définition du timestamp UNIX et cela fonctionne, s'il faut changer, ce sera une simple ligne à modifier.

le n° de série
"Le signataire devra affecter à chaque utilisateur de façon permanente un numéro de série unique en générant une chaine de 15 caractères aléatoires [A..Z][0..9] en appelant xml_initialisation.php"

personnellement je comprends que chaque internaute doit avoir un n° de série unique tout au long de sa session, c'est pour cela que je le mets dans une variable de session que je récupère pour chaque utilisation d'une API. Mais ce n'est peut-être pas le cas !

Dimanche 23 Août 2015 19:17

Merci mimi40 pour cette première réponse.

Je viens d'essayer ceci :
$buffer = file_get_contents("https://twitter.com"Clin d'oeil;
echo $buffer;

Ca fonctionne très bien (la page twitter s'affiche dans la page retournée), donc en fait file_get_contents() semble bien fonctionner, mais pas en appelant l'API Smartping en tant qu'URL...
Je creuse encore...

Dimanche 23 Août 2015 20:06

Concernant le timestamp, quelles que soit les normes existantes (UNIX / PHP ou autre), on utilise l'API FFTT, donc si cette API définit un format, elle devrait s'attendre à le recevoir et à mon avis en conséquence il me parait plus sûr de le suivre.
C'est juste mon avis, que je donne malgré le fait que pour le moment je n'arrive à pas grand chose...

Une autre remarque à propos de la fonction de génération aléatoire du champ "serie" : les documents FFTT préconisent [A..Z][0..9] donc la chaine suivante :
abcdefghijklmnpqrstuvwxyABCDEFGHIJKLMNOPQRSUTVWXYZ0123456789
devrait selon moi être remplacée par
ABCDEFGHIJKLMNOPQRSUTVWXYZ0123456789
Encore une fois, c'est juste mon avis, que je donne malgré le fait que pour le moment je n'arrive à pas grand chose...

Dimanche 23 Août 2015 20:08

J'ai essayé de tester l'initialisation avec le code conseillé, mais sans succès...

Dimanche 23 Août 2015 20:28

Citation de Toon :
J'ai essayé de tester l'initialisation avec le code conseillé, mais sans succès...

Avec celui de mimi? Car perszo j'ai aucun soucis avec. J'ai même fini de reprendre la class SMGbab16, et il faut que je la test complètement avant de partager (même si j'ai des soucis de perf, sûrement du à l'absence de cache dans ce que j'ai fait).

Dimanche 23 Août 2015 20:41

Citation de crab38 :
Citation de Toon :
J'ai essayé de tester l'initialisation avec le code conseillé, mais sans succès...

Avec celui de mimi? Car perszo j'ai aucun soucis avec. J'ai même fini de reprendre la class SMGbab16, et il faut que je la test complètement avant de partager (même si j'ai des soucis de perf, sûrement du à l'absence de cache dans ce que j'ai fait).


oui, j'ai repris ceci :

$serie = random_str(15);
$cle = md5(API_MDP);
$tm = round(microtime(true)*1000); // timestamp en ms
$tmEntier = sprintf("%.0f", $tm); // pour ne pas avoir de notation scientifique
$tmc = hash_hmac("sha1",$tmEntier,$cle); // timestamp codé
$chaine = 'http://www.fftt.com/mobile/pxml/xml_initialisation.php?serie='.$serie.'&tm='.$tmEntier.'&tmc='.$tmc.'&id='.API_ID;
echo $chaine;
$result = file_get_contents($chaine);
echo $result;

Je commence à croire que mes identifiants ne sont pas bons...

Lundi 24 Août 2015 02:41

Bonjour Toon

1 - quelques modifications puisque j'ai mis mot de passe et ID en constantes dans le site du Comité.

$motDePasse = "xxxx";
$cle = md5($motDePasse );
$monID = "yyy";

2 - tu dis que $buffer = file_get_contents("https://twitter.com" ) fonctionne.
Je remarque que tu as des guillemets autour de l'URL.
Peux-tu faire la même chose avec la chaine de connexion, on ne sait jamais !
Tu devrais donc avoir quelque chose de cette forme où tu as uniquement xxx et yyy à remplacer par tes identifiants

$serie = random_str(15);
$motDePasse = "xxxx";
$cle = md5($motDePasse );
$monID = "yyyy";

$tm = round(microtime(true)*1000); // timestamp en ms
$tmEntier = sprintf("%.0f", $tm); // pour ne pas avoir de notation scientifique
$tmc = hash_hmac("sha1",$tmEntier,$cle); // timestamp codé

$chaine = "http://www.fftt.com/mobile/pxml/xml_initialisation.php?serie=".$serie."&tm=".$tmEntier."&tmc=".$tmc."&id=".$monID;
$result = file_get_contents($chaine);
echo $result;
Message modifié 1 fois, dernière modification Lundi 24 Août 2015 02:43 par mimi40

Lundi 24 Août 2015 10:44

Bonjour Mimi40,

As-tu réussi à faire les feuilles de match ?

Pour le moment, le webservice me retourne que l'information pour "equa" et pour le reste il me retourne rien. As-tu le même soucis ?

Cordialement

Lundi 24 Août 2015 11:12

Bonjour Mimi40,

Ca ne fonctionne toujours pas... Je vais laisser reposer un peu...
J'ai fait un essai avec une fausse addresse, par example www.ffttS.com. A ce moment là j'ai un code d'erreur. J'en déduis donc que quand j'envoie ma requête avec la bonne adresse, elle est bien reçu côté FFTT, mais que rien n'est envoyé en retour... comme si le serveur refusait de traiter la demande, donc peut être un problème d'identification...

Lundi 24 Août 2015 11:47

Bonjour

Toon
effectivement cela ressemble à un problème d'identification car il n'y a pas de raison que les fonctions tournent bien pour les uns et pas pour toi.

Guigui591012
même chose mais comme il n'y a pas de message d'erreur cela me paraît normal.
Pour le moment la fonction me retourne le nom des équipes enregistrées mais pas le reste puis qu’aucune feuille n'a encore été saisie sur SPID pour cette phase.
Il faudra attendre qu'une feuille de rencontre soit saisie pour vérifier tout cela donc il y aura du travail à effectuer à partir du 19/09/2015.

Lundi 24 Août 2015 11:50

Citation de mimi40 :
Bonjour

Guigui591012
même chose mais comme il n'y a pas de message d'erreur cela me paraît normal.
Pour le moment la fonction me retourne le nom des équipes enregistrées mais pas le reste puis qu’aucune feuille n'a encore été saisie sur SPID pour cette phase.
Il faudra attendre qu'une feuille de rencontre soit saisie pour vérifier tout cela donc il y aura du travail à effectuer à partir du 19/09/2015.


Il te retourne bien les 2 noms des équipes ? moi j'ai que l'équipe A

Lundi 24 Août 2015 13:50

Oui, il retourne les noms des 2 équipes, testé et approuvé ^^
13
18
381 messages

Vous êtes ici : Accueil > Forums > Développement de vos sites