Partage
  • Partager sur Facebook
  • Partager sur Twitter

API Mondial Relay Question

7 juillet 2020 à 9:44:12

Bonjour,

Je suis en train de lire un exemple de code de l'API de Mondial Relay qui permet de trouver des points relais à proximité.

Voici le code :

<?php
require_once('lib/nusoap.php');
// Global Settings definition
// Définition des paramètres globaux
$MR_WebSiteId = "BDTEST12";
$MR_WebSiteKey = "MRT_2012";
$client = new nusoap_client("http://api.mondialrelay.com/Web_Services.asmx?WSDL", true);
$client->soap_defencoding = 'utf-8';
// We define the parameters as a string array. Each Key/Val represents a parameter of the soap call
// On défini les paramètres dans un tableau de chaînes. Chaque paire Clé/Valeur est un paramètre de
l'appel SOAP
$params = array(
 'Enseigne' => $MR_ WebSiteId,
 'Pays' => "FR",
 //'NumPointRelais' => "",
 'Ville' => "",
 'CP' => "75010",
 'Latitude' => "",
 'Longitude' => "",
 'Taille' => "",
 'Poids' => "",
 'Action' => "",
 'DelaiEnvoi' => "0",
 'RayonRecherche' => "20",
 //'TypeActivite' => "",
 //'NACE' => "",
 'NombreResultats' => "20",
);
// We generate the request's security code
// On génère la clé de sécurité de l'appel
$code = implode("", $params);
$code .= $MR_WebSiteKey;
$params["Security"] = strtoupper(md5($code));
// We make the call and load it in the $result var
// On réalise l'appel et stocke le résultat dans la variable $result
$result = $client->call(
 'WSI4_PointRelais_Recherche',
 $params,
 'http://api.mondialrelay.com/',
 'http://api.mondialrelay.com/WSI4_PointRelais_Recherche'
);
// We check their is no error during the process
// On vérifie qu'il n'y a pas eu d'erreur
if ($client->fault)
{
 echo '<h2>Fault (Expect - The request contains an invalid SOAP body)</h2><pre>';
 print_r($result);
 echo '</pre>';
}
else
{
 $err = $client->getError();
 if ($err) { echo '<h2>Error</h2><pre>' . $err . '</pre>'; }
 else
 {
 echo '<h2>Result</h2><pre>';
 print_r($result);
 echo '</pre>';
 }
}
echo '<h2>Request</h2><pre>' . htmlspecialchars($client->request, ENT_QUOTES) . '</pre>';
echo '<h2>Response</h2><pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>';
echo '<h2>Debug</h2><pre>' . htmlspecialchars($client->getDebug(), ENT_QUOTES) . '</pre>';
?> 

Je ne comprends pas comment est fait l'appel : aux lignes où on fait l'appel de l'API avec Call et où on stocke le résultat de l'appel dans la variable result. (ligne 36 à 41)

Pouvez-vous m'expliquer s'il vous plaît ?

Merci.

-
Edité par LeStagiaire 7 juillet 2020 à 9:44:36

  • Partager sur Facebook
  • Partager sur Twitter
8 juillet 2020 à 10:10:32

Salut,

Je ne connais pas là lib, mais je ne pense pas que ca soit nécessaire.

Concrètement, tu as un objet $client créer à la ligne 7, tu fournis au constructeur de l'objet les paramètres requis donc une adresse HTTP en l'occurrence ainsi qu'un booléen, à partir de la, tu as initialisé ton objet $client.

Arrivé ligne 36, tu fais appelle à la méthode call() de ton objet $client, cette méthode te renvoie un résultat (si tu cherches la définition de la méthode dans cette lib, tu aurais eu la réponse), donc tu stock ce résultat dans une variable $result.

Ton objet $client possède une variable $fault, qui doit se remplir quand des erreurs spécifique surviennent lors de l'utilisation d'une des méthodes de la lib (ou uniquement quand call() échoue, je ne sais pas il faut regarder le code de la lib), ligne 44 tu vérifies donc si cette variable est évalué a vrai ou faux (vide ou pas vide) et tu agis en consequence. Tu as aussi une méthode getError() donc il doit y avoir une différence entre $fault et la méthode getError(), elles ne contiennent pas les même types d'erreurs, enfin ca reste théorique il faut que tu regardes le code de la lib.

-
Edité par xoxotf 8 juillet 2020 à 10:16:51

  • Partager sur Facebook
  • Partager sur Twitter
9 juillet 2020 à 16:13:35

Bonjour,

Merci beaucoup pour ta réponse.

  • Partager sur Facebook
  • Partager sur Twitter