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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Création d'un site web avec l'API de Cardmarket


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Préparateur de commandes
    Inscrit en
    Février 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Préparateur de commandes

    Informations forums :
    Inscription : Février 2022
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Création d'un site web avec l'API de Cardmarket
    Bonjour,

    J'ai récemment rejoint une entreprise et ayant quelques connaissances en développement (principalement PHP), on m'a chargé de créer un site web qui utilise l'API de Cardmarket pour pouvoir gérer nos stocks, ajouter des produits à notre panier, faire des statistiques sur nos ventes et d'autres choses dans le même genre.

    Alors je me suis lancé et j'ai commencé par lire des cours sur les API, puis j'ai effectué quelques tests qui ne se sont pas révélés concluants du tout. Les tests ont été réalisés en local via Wampserver mais aussi sur Postman.

    https://api.cardmarket.com/ws/docume..._2.0:Main_Page

    Cardmarket possède un serveur sandbox pour effectuer des tests ainsi que 2 versions de son API. Pour commencer j'ai créé une App dédiée via mon profil ce qui me semblait correspondre au projet. J'ai ensuite effectué les tests en utilisant les infos des deux versions de différentes manières et sans jamais réussir à recevoir les données.

    Tous mes tests ont reçu comme réponse "403 Forbidden" ce qui correspond selon leur doc à :

    « You get a 403 Forbidden HTTP status, when you try to access valid resources, but don't have access to it, i. e. you try to access /authenticate with a dedicated or widget app, or resources specifically written for widget apps with a dedicated app. » (apparemment il n'y a pas d'erreur d'authentification mais d'autorisation à l'accès aux données si je comprends bien)

    Alors au départ j'avais effectivement tenté de récupérer des infos sur les articles et produits de "Marketplace Information", sauf qu'ensuite j'ai ajouté des produits à mon panier et tenter de les récupérer ce qui normalement est autorisé pour ce type d'app (https://api.cardmarket.com/ws/docume...0:ShoppingCart)

    Il en va de même pour mon code qui m'affiche une page blanche après exécution. Voici le code (les tokens ont été retirés) :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    <!doctype html>
    <html>
     
      <head>
         <title>Titre de la page</title>
         <link rel="stylesheet" type="text/css" href="styles.css">
      </head>
     
      <body>
     
        <?php
     
        $server_url            = "https://sandbox.cardmarket.com/ws/v2.0/output.json/";
     
     
        $method             = "GET";
        $url             = $server_url."stock/shoppingcart-articles";
        $appToken           = "";
        $appSecret          = "";
        $accessToken        = "";
        $accessSecret       = "";
        $nonce              = uniqid();
        $timestamp          = time();
        $signatureMethod    = "HMAC-SHA1";
        $version            = "1.0";
     
        $params             = array(
           'realm'                     => $url,
           'oauth_consumer_key'        => $appToken,
           'oauth_token'               => $accessToken,
           'oauth_nonce'               => $nonce,
           'oauth_timestamp'           => $timestamp,
           'oauth_signature_method'    => $signatureMethod,
           'oauth_version'             => $version,
       );
     
       $baseString         = strtoupper($method) . "&";
       $baseString        .= rawurlencode($url) . "&";
     
       /* Gather, encode, and sort the base string parameters */
     
       $encodedParams      = array();
       foreach ($params as $key => $value)
       {
           if ("realm" != $key)
           {
               $encodedParams[rawurlencode($key)] = rawurlencode($value);
           }
       }
       ksort($encodedParams);
     
       /* Expand the base string by the encoded parameter=value pairs */
     
       $values             = array();
       foreach ($encodedParams as $key => $value)
       {
           $values[] = $key . "=" . $value;
       }
       $paramsString       = rawurlencode(implode("&", $values));
       $baseString        .= $paramsString;
     
       /*
        * Create the signingKey
        */
     
       $signatureKey       = rawurlencode($appSecret) . "&" . rawurlencode($accessSecret);
     
       /**
        * Create the OAuth signature
        * Attention: Make sure to provide the binary data to the Base64 encoder
        *
        * @var $oAuthSignature string OAuth signature value
        */
     
       $rawSignature       = hash_hmac("sha1", $baseString, $signatureKey, true);
       $oAuthSignature     = base64_encode($rawSignature);
     
       /*
        * Include the OAuth signature parameter in the header parameters array
        */
       $params['oauth_signature'] = $oAuthSignature;
     
       /*
        * Construct the header string
        */
     
       $header             = "Authorization: OAuth ";
       $headerParams       = array();
       foreach ($params as $key => $value)
       {
           $headerParams[] = $key . "=\"" . $value . "\"";
       }
       $header            .= implode(", ", $headerParams);
     
       /*
        * Get the cURL handler from the library function
        */
       $curlHandle         = curl_init();
     
       /*
        * Set the required cURL options to successfully fire a request to MKM's API
        */
     
       curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
       curl_setopt($curlHandle, CURLOPT_URL, $url);
       curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array($header));
       curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER, false);
     
       /**
        * Execute the request, retrieve information about the request and response, and close the connection
        *
        * @var $content string Response to the request
        * @var $info array Array with information about the last request on the $curlHandle
        */
       $content            = curl_exec($curlHandle);
       $info               = curl_getinfo($curlHandle);
     
       curl_close($curlHandle);
     
       /*
        * Convert the response string into an object
        *
        * If you have chosen XML as response format (which is standard) use simplexml_load_string
        * If you have chosen JSON as response format use json_decode
        *
        * @var $decoded \SimpleXMLElement|\stdClass Converted Object (XML|JSON)
        */
     
       $decoded = json_decode($content, true);
     
        if(!empty($decoded->results))
        {
            foreach($decoded->results as $data)
            {
                echo "<u>" . $data->seller['name']."</u> : ". $data->buyer['name'];
                echo "<br />";
            }
        }
        else
        {
            echo 'Rien ici';
        }
     
        ?>
     
      </body>
     
    </html>
    C'est la première fois que je me lance dans les API donc j'ai certainement loupé plusieurs choses alors si une personne pourrait m'aiguiller et me donner quelques conseils et/ou piste à suivre, je suis preneur.

    Merci d'avance

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    Le fait que tu reçoives une erreur 403 est plutôt positif dans le sens où tu arrives à faire une requête à peut près correctement à l'API.
    403 représente effectivement une erreur de permission , ce qui voudrais dire que tu es correctement authentifié (sinon ca serait 401).

    Selon leur doc cela veux dire que tu essai d'accéder à une ressource qui n'est pas autorisée pour ton compte, ou en tout cas la configuration que tu en as fait.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Homme Profil pro
    Préparateur de commandes
    Inscrit en
    Février 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Préparateur de commandes

    Informations forums :
    Inscription : Février 2022
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci de ta réponse rapide !

    Oui c'est ce que j'avais à peu près compris concernant la permission, sauf qu'il est bien précisé sur cette page https://api.cardmarket.com/ws/docume...t_Manipulation que je devrais bien avoir l'autorisation d'accéder à ces données via une App Dédiée. Seuls les Widget App ne devraient pas pouvoir récupérer ces données. (+ je viens d'essayer sur plusieurs autres ressources auxquelles je devrais avoir accès et le résultat est le même)

    Postman me renvoie la même erreur 403 alors je continue à effectuer des tests (principalement en changeant l'URL que j'appelle) mais toujours sans succès. Je pensais également que faire ça en local pouvait poser problème alors j'ai essayé directement via un site hébergé, mais le résultat est également le même...

    Qu'entends-tu par configuration ?

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    Local ou site hébergé ca n'a pas d'importance.
    Quand je parle de configuration , c'est plus au niveau de ton compte qui donne accès à l'API. Le type d'application, ton stock d'éventuel quotas d'accès si il existes , etc ...

    Ca peut aussi être un header manquant dans tes requêtes , ou le token oauth qui n'est pas bon. Bref plein de possibilité.
    Ne connaissant pas l'API en elle même , ca va être difficile de te dépanner mais sur la partie purement requetage ca me semble à peut près correct.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Candidat au Club
    Homme Profil pro
    Préparateur de commandes
    Inscrit en
    Février 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Préparateur de commandes

    Informations forums :
    Inscription : Février 2022
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Local ou site hébergé ca n'a pas d'importance.
    Ok je vois, merci pour l'info.

    Quand je parle de configuration , c'est plus au niveau de ton compte qui donne accès à l'API. Le type d'application, ton stock d'éventuel quotas d'accès si il existes , etc ...
    Je suis sur le serveur Sandbox donc les accès sont censés être approuvés automatiquement (selon la doc) et pour ce qui est du reste, j'ai bien fait attention à faire des requêtes que mon type d'app autorise et aussi de faire des requêtes sur des éléments existants

    Ca peut aussi être un header manquant dans tes requêtes , ou le token oauth qui n'est pas bon. Bref plein de possibilité.
    Donc je pense en effet que ça doit venir d'une de ces possibilités. Le fait étant que le code que je vous ai envoyé est une copie d'un exemple qui est censé fonctionner selon la doc et que j'ai du coup légèrement modifié pour mettre mes tokens, changer les requêtes et l'affichage des données. Je vais quand même essayer de continuer à creuser de ce côté-là.

    Ne connaissant pas l'API en elle même , ca va être difficile de te dépanner mais sur la partie purement requetage ca me semble à peut près correct.
    Oui j'imagine en tout cas merci beaucoup pour tes réponses.

  6. #6
    Candidat au Club
    Homme Profil pro
    Préparateur de commandes
    Inscrit en
    Février 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Préparateur de commandes

    Informations forums :
    Inscription : Février 2022
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Toujours pas de solution à l'horizon...

    Je commence à penser que le problème ne vient pas réellement du côté de ma requête (qui est tiré d'ailleurs des "exemples qui fonctionnent" de la doc), mais du côté des permissions que Cardmarket nous accordent et qu'il n'y aurait donc pas vraiment de solution

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    vous avez le souci uniquement avec l'appel à "stock/shoppingcart-articles" et les autres appels fonctionnent ?
    si c'est ça, c'est bien un souci de cardmarket, peut-être que leur documentation n'est pas à jour.

  8. #8
    Candidat au Club
    Homme Profil pro
    Préparateur de commandes
    Inscrit en
    Février 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Préparateur de commandes

    Informations forums :
    Inscription : Février 2022
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par mathieu Voir le message
    vous avez le souci uniquement avec l'appel à "stock/shoppingcart-articles" et les autres appels fonctionnent ?
    si c'est ça, c'est bien un souci de cardmarket, peut-être que leur documentation n'est pas à jour.
    Aucune de mes requêtes ne fonctionnent, peu importe les données que je demande et auxquelles je suis censé avoir accès. Je me prends un 403 Forbidden à chaque tentative sachant qu'il est précisé dans la doc que je suis bien censé avoir les permissions d'accéder aux données que je demande. J'ai essayé un code très similaire au mien venant de github, qui est censé fonctionner aussi, alors j'ai changé les tokens et le lien du GET (étant donné que son code est censé fonctionner avec la version officielle de l'API et non pas la sandbox...) et non toujours rien. J'ai l'impression que le problème vient surtout de cette version "sandbox" du coup

    Comme il est dit dans la doc :

    « We may deploy new software to the sandbox server at any time and without any further notice. »

    et

    « The Sandbox Server is available under https://sandbox.cardmarket.com. For API requests use this as the base URI (rather than https://api.cardmarket.com). The Sandbox server is mainly provided for testing implementations against the API. We don't provide any support to problems using the website. If you run into specific problem with a single API request, please follow the instructions under the Help Section of the API's Main Page. »

    Donc normalement en changeant la base de l'URL, un code qui fonctionne sur la version officielle devrait fonctionner sur la version sandbox. Mais ce que je constate c'est que la version sandbox ne reflète plus du tout "l'environnement réel" (comme c'est écrit dans la doc de l'API) du Cardmarket actuel/officiel qui a bien évolué.

    EDIT : en tout cas merci de ta réponse et oui leur doc n'a pas été clairement mise à jour depuis 2015 à ce que je vois. Il y a seulement des petites updates datées de ce qui change pour la version officielle (sur laquelle évidemment il est interdit de développer/faire des tests)

  9. #9
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    une dernière chose et ensuite je n'ai plus trop d'idée, regardez le contenu de la réponse brute dans $content, peut-être qu'un message d'erreur pourrait vous donner plus d'informations.

  10. #10
    Candidat au Club
    Homme Profil pro
    Préparateur de commandes
    Inscrit en
    Février 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Préparateur de commandes

    Informations forums :
    Inscription : Février 2022
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Quand je fais echo $content en effet je m'aperçois que j'ai bien le flux de données... sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {"article":[{"idArticle":361396482,"idProduct":267652,"language":{"idLanguage":1,"languageName":"English"},"comments":"","price":8,"count":4,"inShoppingCart":false,"product":{"idGame":3,"enName":"Michael, the Arch-Lightsworn","locName":"Michael, the Arch-Lightsworn","image":".\/img\/items\/5\/SDLI\/267652.jpg","expansion":"Structure Deck: The Realm of Light","nr":"36","expIcon":"318","rarity":"Ultra Rare"},"lastEdited":"2022-02-25T15:11:28+0100","condition":"NM","isSigned":false,"isFirstEd":false,"isAltered":false},{"idArticle":361396480,"idProduct":267654,"language":{"idLanguage":1,"languageName":"English"},"comments":"","price":12,"count":5,"inShoppingCart":false,"product":{"idGame":3,"enName":"Minerva, Lightsworn Maiden","locName":"Minerva, Lightsworn Maiden","image":".\/img\/items\/5\/SDLI\/267654.jpg","expansion":"Structure Deck: The Realm of Light","nr":"002","expIcon":"318","rarity":"Super Rare"},"lastEdited":"2022-02-25T15:11:28+0100","condition":"NM","isSigned":false,"isFirstEd":false,"isAltered":false},{"idArticle":361396481,"idProduct":267655,"language":{"idLanguage":1,"languageName":"English"},"comments":"","price":5,"count":2,"inShoppingCart":false,"product":{"idGame":3,"enName":"Raiden, Hand of the Lightsworn","locName":"Raiden, Hand of the Lightsworn","image":".\/img\/items\/5\/SDLI\/267655.jpg","expansion":"Structure Deck: The Realm of Light","nr":"003","expIcon":"318","rarity":"Super Rare"},"lastEdited":"2022-02-25T15:11:28+0100","condition":"NM","isSigned":false,"isFirstEd":false,"isAltered":false},{"idArticle":361396483,"idProduct":267659,"language":{"idLanguage":1,"languageName":"English"},"comments":"","price":4,"count":12,"inShoppingCart":false,"product":{"idGame":3,"enName":"Jain, Lightsworn Paladin","locName":"Jain, Lightsworn Paladin","image":".\/img\/items\/5\/SDLI\/267659.jpg","expansion":"Structure Deck: The Realm of Light","nr":"007","expIcon":"318","rarity":"Common"},"lastEdited":"2022-02-25T15:11:28+0100","condition":"NM","isSigned":false,"isFirstEd":false,"isAltered":false}]}

    Du coup ce que je ne comprends pas pour le coup c'est pourquoi le code suivant m'affiche "Rien ici" et comment je peux manipuler ces données ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     $decoded = json_decode($content, true);
     
    	if(!empty($decoded->results))
    	{
    		foreach($decoded->results as $data)
    		{
    			echo "<u>" . $data->article['idProduct']."</u> : ". $data->product['enName'];
    			echo "<br />";
    		}
    	}
    	else
    	{
    		echo 'Rien ici';
    	}

  11. #11
    Candidat au Club
    Homme Profil pro
    Préparateur de commandes
    Inscrit en
    Février 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Préparateur de commandes

    Informations forums :
    Inscription : Février 2022
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    J'ai donc réussi à afficher ceci via var_dumb(json_decode($content))

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    C:\wamp64\www\api\index.php:119:
    object(stdClass)[13]
      public 'article' => 
        array (size=4)
          0 => 
            object(stdClass)[1]
              public 'idArticle' => int 361396482
              public 'idProduct' => int 267652
              public 'language' => 
                object(stdClass)[2]
                  ...
              public 'comments' => string '' (length=0)
              public 'price' => int 8
              public 'count' => int 4
              public 'inShoppingCart' => boolean false
              public 'product' => 
                object(stdClass)[3]
                  ...
              public 'lastEdited' => string '2022-02-25T15:11:28+0100' (length=24)
              public 'condition' => string 'NM' (length=2)
              public 'isSigned' => boolean false
              public 'isFirstEd' => boolean false
              public 'isAltered' => boolean false
          1 => 
            object(stdClass)[4]
              public 'idArticle' => int 361396480
              public 'idProduct' => int 267654
              public 'language' => 
                object(stdClass)[5]
                  ...
              public 'comments' => string '' (length=0)
              public 'price' => int 12
              public 'count' => int 5
              public 'inShoppingCart' => boolean false
              public 'product' => 
                object(stdClass)[6]
                  ...
              public 'lastEdited' => string '2022-02-25T15:11:28+0100' (length=24)
              public 'condition' => string 'NM' (length=2)
              public 'isSigned' => boolean false
              public 'isFirstEd' => boolean false
              public 'isAltered' => boolean false
          2 => 
            object(stdClass)[7]
              public 'idArticle' => int 361396481
              public 'idProduct' => int 267655
              public 'language' => 
                object(stdClass)[8]
                  ...
              public 'comments' => string '' (length=0)
              public 'price' => int 5
              public 'count' => int 2
              public 'inShoppingCart' => boolean false
              public 'product' => 
                object(stdClass)[9]
                  ...
              public 'lastEdited' => string '2022-02-25T15:11:28+0100' (length=24)
              public 'condition' => string 'NM' (length=2)
              public 'isSigned' => boolean false
              public 'isFirstEd' => boolean false
              public 'isAltered' => boolean false
          3 => 
            object(stdClass)[10]
              public 'idArticle' => int 361396483
              public 'idProduct' => int 267659
              public 'language' => 
                object(stdClass)[11]
                  ...
              public 'comments' => string '' (length=0)
              public 'price' => int 4
              public 'count' => int 12
              public 'inShoppingCart' => boolean false
              public 'product' => 
                object(stdClass)[12]
                  ...
              public 'lastEdited' => string '2022-02-25T15:11:28+0100' (length=24)
              public 'condition' => string 'NM' (length=2)
              public 'isSigned' => boolean false
              public 'isFirstEd' => boolean false
              public 'isAltered' => boolean false
    Puis j'ai réussi à récupérer et afficher une information via cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       $decode = json_decode($content);
    $productName = $decode->{'article'}[0]->{'product'}->{'enName'};
    Maintenant je galère à faire fonctionner un foreach étant quelqu'un qui a appris à développer en procédural à l'époque (oui y a + de 10 ans de ça) je galère vraiment avec le style orienté objet.

    Avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       $decode = json_decode($content, true);
     
       foreach($decode as $data)
    	{
    		$productName = $data->article->product->enName;
    		echo '<br><br>'.$productName;
    	}
    J'obtiens ce message (en trois exemplaires -> pour product et enName également) :

    Trying to get property 'article' of non-object
    Si quelqu'un a une piste à me donner

    En tout cas encore merci pour vos réponses !

  12. #12
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    et donc vous avez ce contenu avec un code de réponse 401 ? c'est bizarre, essayez peut-être de contacter le service technique pour leur demander ce qu'ils en pensent.

    en ce qui concerne l'analyse de la réponse, il vaut mieux créer une nouvelle discussion puisque ce n'est pas lié au souci expliqué dans votre 1er message.

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    Maintenant je galère à faire fonctionner un foreach étant quelqu'un qui a appris à développer en procédural à l'époque (oui y a + de 10 ans de ça) je galère vraiment avec le style orienté objet.
    Passe true au 2 ème argument de json_decode et tu auras un tableau plutôt qu'un objet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $decode = json_decode($content, true);
    var_dump($decode);
    Tu n'as plus qu'à le parcourir classiquement
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Création d'un site web avec mapserver
    Par noramokh dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 20/03/2016, 09h25
  2. Création d'un site web avec c#
    Par dosfly dans le forum C#
    Réponses: 2
    Dernier message: 20/01/2012, 14h14
  3. Création d'un site web avec kompozer
    Par Homodelphinus dans le forum Langage
    Réponses: 8
    Dernier message: 01/12/2010, 01h31
  4. Création de plusieurs sites Web avec une seule IP
    Par yoshï dans le forum Apache
    Réponses: 6
    Dernier message: 22/09/2010, 17h20
  5. création d'un site web avec flash
    Par pc_omiga dans le forum Flash
    Réponses: 2
    Dernier message: 21/01/2007, 03h52

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