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

Langage PHP Discussion :

[php 8] Web service rest php : rien en sortie


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 394
    Par défaut [php 8] Web service rest php : rien en sortie
    Bonjour,
    J'ai ceci dans le code :
    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
    function appelWebServiceRest($paramUrl, $paramLogin, $paramPassword) {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $paramUrl);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //YD
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); //YD
        curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
        curl_setopt($curl, CURLOPT_USERPWD, $paramLogin . ':' . $paramPassword);
        curl_setopt($curl, CURLOPT_TIMEOUT, 3600);
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); //YD
        curl_setopt($curl, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json',
            'Accept: application/json'
        ));
        $reponseEnJson = curl_exec($curl);
        //$error = curl_error($curl);
        //echo "Curl error: " . $error;
        curl_close($curl);
     
        return $reponseEnJson;
    }
    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
    $monJson = $monUtilitaire->appelWebServiceRest('https://vmw-cyberwatch.toto/api/v3/assets/servers?hostname=' . $pNomOrd, 'hbik=', '8owA==');
        var_dump($monJson);
        $monObjet = json_decode($monJson, true);
        var_dump($monObjet);
     
    if (is_array($monObjet)) {
        $count = count($monObjet);
    } else {
        $count = 0;
    }
     
     
    if (!empty($monObjet)) {
        if ($count > 1) {
            $item = $monObjet[0];
            if (isset($item['description'])) {
                $description = $item['description'];
                echo "Description du PC --------------------------------->".$description;
            } else {
                echo "La clé 'description' n'existe pas dans le tableau.";
            }
        } else {
            echo "Le tableau ne contient pas assez d'éléments.";
        }
    } else {
        echo "Le tableau est vide.";
    }
    et le json : via l'url avec le navigateur
    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
    [
      {
        "id": 10,
        "hostname": "l107512",
        "description": "Dattt",
        "last_communication": "2023-04-04T15:59:58.328+02:00",
        "reboot_required": false,
        "boot_at": "2023-04-03T13:59:09.000+02:00",
        "category": "desktop",
        "created_at": "2022-01-25T19:41:52.000+01:00",
        "environment": {
          "id": 2,
          "name": "Medium",
          "confidentiality_requirement": "confidentiality_requirement_medium",
          "integrity_requirement": "integrity_requirement_medium",
          "availability_requirement": "availability_requirement_medium",
          "ceiling_cvss_v3": null
        },
        "os": {
          "key": "windows_10_22h2_64",
          "name": "Windows 10 22H2",
          "arch": "AMD64",
          "eol": "2025-05-14T00:00:00.000+02:00",
          "short_name": "Windows 10 22H2",
          "type": "Os::Windows"
        },
        "groups": [
          {
            "id": 4,
            "name": "DI",
            "description": "",
            "color": "#12afcb"
          }
        ]
      }
    ]
    J'ai "Le tableau ne contient pas assez d'éléments".
    et la var_dump donne : InfoInscription.class.php:30:int 1
    Je ne comprends plus rien
    Merci

  2. #2
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Bonjour

    Si j'en crois la documentation officielle curl_exec retourne un boolean et donc ton output 1 signifie juste que cela aurait fonctionné.

    Toujours dans cette doc il est fait mention de CURLOPT_RETURNTRANSFER qui, s'il serait initialisé indiquerait à curl_exec de retourner une chaîne de caractères or, chez toi, c'est false qui est utilisé.

    https://www.php.net/manual/en/function.curl-exec.php

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 394
    Par défaut
    Bonjour,
    je vous remercie beaucoup.
    J'ai maintenant une réponse à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $description = $item['description'];
                echo "Description du PC --------------------------------->".$description;
    Super TOP

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Un conseil, lors d'un appel à une ressource HTTP en général, vérifiez toujours le status code en retour, qui devrait être 200 en général.
    Un exemple qui montre comment récupérer cette info avec Curl: https://www.php.net/manual/en/function.curl-getinfo.php

    Si vous développez une API, alors elle devrait évidemment retourner des codes pertinents en fonction de l'erreur rencontrée. Par exemple 400 pour une requête malformée, 401/403 pour les problèmes d'autorisation, 422 pour les requêtes a priori valides mais qui ne peuvent être satisfaites etc.
    Car si même les requêtes en échec renvoient 200, il est difficile pour le client de déterminer si l'appel a réussi, à moins d'examiner le body de la réponse, qui peut être imprévisible.
    La première chose qu'un client doit faire avant même de tenter de parser la réponse, c'est examiner le status code.

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

Discussions similaires

  1. Web service REST et API PHP
    Par Heartlessmdh dans le forum Services Web
    Réponses: 3
    Dernier message: 29/03/2015, 14h59
  2. Web Service REST sur serveur PHP avec un client JAVA
    Par john anderta dans le forum Services Web
    Réponses: 0
    Dernier message: 12/11/2012, 20h43
  3. Web Services et PHP
    Par osopardo dans le forum Langage
    Réponses: 1
    Dernier message: 03/07/2006, 12h15
  4. [Web Service][SOAP] PHP et nuSOAP
    Par loukili81 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 07/06/2006, 15h37
  5. [Web Service][SOAP] PHP NuSOAP
    Par ssebuser dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 16/05/2006, 14h29

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