Kevinleg Posté(e) le 4 mai 2022 Partager Posté(e) le 4 mai 2022 (modifié) Bonjour à tous, J'ai un nas DS220j, avec DSM 7.0-41890. Sur celui-ci j'ai installé les paquets Webstation et PHP 7.4. Je l'utilise pour moi même, notamment pour automatiser la création de mes devis, et autre. Jusqu'ici aucun problème, PHP s’exécute bien, et je ne rencontre pas de difficultés. Afin d'automatiser le calcul des distances vers mes lieux d'intervention je souhaite utiliser l'API google distance matrix via le script ci-dessous : <form action="testapi.php"> Aller à : <input type="text" name="destination"> <input type="submit" name="submit" value="Get distance"> </form> <?php if (isset($_GET['submit'])) { $origin = 'Larçay 37270'; $destination = $_GET['destination']; $url='https://maps.googleapis.com/maps/api/distancematrix/json?destinations='.urlencode($destination).'&origins='.urlencode($origin).'&key=X&language=fr-Fr&sensor=false'; $distance_data = file_get_contents($url); var_dump($url); echo '</br>'; var_dump($distance_data); echo '</br>'; print_r(error_get_last()); J'obtiens l'erreur suivante : No such file or directory [file] => /volume1/web/testapi.php [line] => 22 , et $ distance_data est null file_get_contents ne parviens pas à accéder à l'URL dont j'ai besoin, alors que depuis mon serveur OVH ce script fonctionne parfaitement ! Quelqu'un aurait-il une idée de ce qui pourrait se passer ? Mon IP serait bloquée ? Problème de certificat SSL ? J'espère être précis dans ma demande, n'hésitez pas à me poser plus de questions si besoin, Merci à tous, Kevin Modifié le 4 mai 2022 par Kevinleg 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kevinleg Posté(e) le 5 mai 2022 Auteur Partager Posté(e) le 5 mai 2022 Bonjour à tous cela fonctionne avec curl ! $url='https://maps.googleapis.com/maps/api/distancematrix/json?destinations='.urlencode($destination).'&origins='.urlencode($origin).'&key=maclé&language=fr-Fr&sensor=false'; //Test curl echo 'Test Curl</br>'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_PROXYPORT, 3128); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $response = curl_exec($ch); curl_close($ch); var_dump($response); //Test curl 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
cadkey Posté(e) le 6 mai 2022 Partager Posté(e) le 6 mai 2022 @Kevinleg bonjour, Tu peux recuperer $response en tableau (array) formaté lisible via json_decode $Datas = json_decode($response, true); $Datas['rows'][0]['elements'][0]['distance']['text'] dans ton unité de distance $Datas['rows'][0]['elements'][0]['distance']['value'] en metre $Datas['rows'][0]['elements'][0]['duration']['text'] en heure et min $Datas['rows'][0]['elements'][0]['duration']['value'] = en seconde 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kevinleg Posté(e) le 15 mai 2022 Auteur Partager Posté(e) le 15 mai 2022 Merci beaucoup cadkey ! Effectivement j'ai fait exactement comme ça ... $distance_arr = json_decode($response); if ($distance_arr->status=='OK') { $destination_addresses = $distance_arr->destination_addresses[0]; $origin_addresses = $distance_arr->origin_addresses[0]; } else { $erreur_adresse = "<p>La requète est invalide</p>"; } if ($origin_addresses=="" or $destination_addresses=="") { $erreur_adresse = "<p>Destination non trouvée</p>"; } // récupérer les éléments dans un tableau $elements = $distance_arr->rows[0]->elements; $distance = $elements[0]->distance->text; $duration = $elements[0]->duration->text; } Je me rends compte que j'étais tellement content que ça fonctionne je n'ai pas partagé la solution en entier. Par défaut curl n'est pas activé dans php sur webstation pour faire celà il faut effectuer la manip suivante : aller dans web station > parametres du langage de script > modifier un profil php > extensions > cocher curl Si d'autres ont le même souci j'espère que ça aidera. PS : J'ai également trouvé un script d'auto complétion pour renseigner l'adresse de destination et de départ : https://github.com/lewagon/google-place-autocomplete 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.