IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

PHP REST API


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2018
    Messages : 50
    Par défaut PHP REST API
    Bonjour à toutes et tous,

    Nouveau défi aujourd'hui. J'essaye tout simplement d'appeler un API pour aller chercher de l'information sur des véhicules.
    Pour le moment, rien de compliquer, je veux juste récupérer les 5 premiers enregistrements pour ensuite ajouter des critères. Seulement là je sèche complétement.
    Le code ci-dessous fonctionne quand j'appelle des API bidons mais dès que je veux interroger l'API du site: https://vpic.nhtsa.dot.gov/api/, j'ai une page blanche, sans erreur ni données.

    Encore une fois, je prends tous vos conseils et avis.

    Merci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?php
    // Initiate curl session in a variable (resource)
    $curl_handle = curl_init();
    $url = "https://vpic.nhtsa.dot.gov/api/vehicles/GetModelsForMakeId/440?format=json";
     
    // Set the curl URL option
    curl_setopt($curl_handle, CURLOPT_URL, $url);
    // This option will return data as a string instead of direct output
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
    // Execute curl & store data in a variable
    $curl_data = curl_exec($curl_handle);
    curl_close($curl_handle);
    // Decode JSON into PHP array
    $response_data = json_decode($curl_data);
    // Print all data if needed
    // print_r($response_data);
    // die();
    // All user data exists in 'data' object
    $VR_data = $response_data->data;
    // Extract only first 5 user data (or 5 array elements)
    $VR_data = array_slice($VR_data, 0, 5);
    // Traverse array and print employee data
    foreach ($VR_data as $VR) {
    	echo "VR: ".$VR->GroupName;
    	echo "<br />";
    }
    ?>

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 511
    Par défaut
    Bonjour,

    Il faudrait
    • Utiliser l'option CURLOPT_SSL_VERIFYPEER et l'intialiser à false pour arrêter cURL de vérifier le certificat du pair.
    • Remplacer $response_data->data; par $response_data->Results; car la première n'existe pas dans l'objet JSON.
    • Remplacer $VR->GroupName par $VR->Model_Name ou une propriété existante Make_ID,Make_Name,Model_ID

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <?php
    // Initiate curl session in a variable (resource)
    $curl_handle = curl_init();
    $url = "https://vpic.nhtsa.dot.gov/api/vehicles/GetModelsForMakeId/440?format=json";
    //disactive cURL de vérifier le cértificat du pair
    curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false);//celle-ci
    // This option will return data as a string instead of direct output
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
    // Set the curl URL option
    curl_setopt($curl_handle, CURLOPT_URL, $url);
    // Execute curl & store data in a variable
    $curl_data = curl_exec($curl_handle);
    //var_dump($curl_data);
    curl_close($curl_handle);
    // Decode JSON into PHP array
    $response_data = json_decode($curl_data);
    $VR_data = $response_data->Results;
    // Extract only first 5 user data (or 5 array elements)
    $VR_data = array_slice($VR_data, 0, 5);
    // Traverse array and print employee data
    foreach ($VR_data as $VR) {
    	echo "VR: ".$VR->Make_Name;
    	echo "<br />";
    }
    L'option qui désactive la vérification SSL DOIT ÊTRE obligatoirement activée lorsque vous mettez votre site en ligne, on la désactive seulement sous un serveur local.
    Voir la liste des options de cURL.

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Que vaut le retour de curl_exec ?

    Selon l'installation curl peut ne pas être capable de vérifier les certificats ssl . Il faut alors le configurer pour que ca marche. De mémoire c'est CURLOPT_CAINFO et CURLOPT_CAPATH.

    Note aussi que curl n'est absolument pas nécessaire pour faire des requêtes basiques
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2018
    Messages : 50
    Par défaut
    Merci à vous, c'est totalement fonctionnel, je n'ai plus qu'à passer une variable pour le NIV et adapter les champs que que je veux voir en sortie.

    Encore merci pour votre aide et bonnes fêtes de fin d'année !

    Citation Envoyé par Toufik83 Voir le message
    Bonjour,

    Il faudrait
    • Utiliser l'option CURLOPT_SSL_VERIFYPEER et l'intialiser à false pour arrêter cURL de vérifier le certificat du pair.
    • Remplacer $response_data->data; par $response_data->Results; car la première n'existe pas dans l'objet JSON.
    • Remplacer $VR->GroupName par $VR->Model_Name ou une propriété existante Make_ID,Make_Name,Model_ID

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <?php
    // Initiate curl session in a variable (resource)
    $curl_handle = curl_init();
    $url = "https://vpic.nhtsa.dot.gov/api/vehicles/GetModelsForMakeId/440?format=json";
    //disactive cURL de vérifier le cértificat du pair
    curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false);//celle-ci
    // This option will return data as a string instead of direct output
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
    // Set the curl URL option
    curl_setopt($curl_handle, CURLOPT_URL, $url);
    // Execute curl & store data in a variable
    $curl_data = curl_exec($curl_handle);
    //var_dump($curl_data);
    curl_close($curl_handle);
    // Decode JSON into PHP array
    $response_data = json_decode($curl_data);
    $VR_data = $response_data->Results;
    // Extract only first 5 user data (or 5 array elements)
    $VR_data = array_slice($VR_data, 0, 5);
    // Traverse array and print employee data
    foreach ($VR_data as $VR) {
    	echo "VR: ".$VR->Make_Name;
    	echo "<br />";
    }
    L'option qui désactive la vérification SSL DOIT ÊTRE obligatoirement activée lorsque vous mettez votre site en ligne, on la désactive seulement sous un serveur local.
    Voir la liste des options de cURL.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. REST api php avec app android --> sécurité
    Par Xbox_men dans le forum Langages serveur
    Réponses: 0
    Dernier message: 27/07/2017, 17h50
  2. PHP et API Google Maps V3
    Par chuckichucki dans le forum Langage
    Réponses: 17
    Dernier message: 11/05/2011, 18h06
  3. Pay-Per-View REST API
    Par okoweb dans le forum Langage
    Réponses: 3
    Dernier message: 23/08/2010, 20h37
  4. [Web Service] PHP YouTube API
    Par jaccaddi dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 04/04/2008, 19h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo