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 :

trouver le mot dans une réponse en XML (webservice REST) [PHP 5.4]


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
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut trouver le mot dans une réponse en XML (webservice REST)
    Bonjour,
    j'interroge un service web REST et je reçois une réponse en XML

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $curl = curl_init();       // Création d'une ressource cURL
    curl_setopt($curl, CURLOPT_URL, $url);     //constantes PREdéfinies parPHP : L'URL à récupérer
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);       
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);      
    $output = curl_exec($curl);                 // Recuperation du réponse / Récupération de l'URL et passage au navigateur
    curl_close($curl);
    Et je reçois les réponse dans IE :

    soit
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="UTF-8"?>
    -<ApiUser version="1.0" generator="zend">-<lookup><response>RESP_SUCCESS</response>-<user><nom>toto</nom><id>578</id></user><status>success</status></lookup></ApiUser>

    soit

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="UTF-8"?>
    -<ApiUser version="1.0" generator="zend">-<lookup><response>RESP_FAILURE</response><status>success</status></lookup></ApiUser>

    J'aimerais bien savoir comment je peux récupérer [RESP_SUCCESS] ou [RESP_FAILURE] dans mon code...

    En fait, je vais appliquer une condition, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ($output=='RESP_SUCCESS'){
    	//continuer
    }
    else{
    	//arrêter;
    }
    Comment je peux nettoyer mon varaible $output ?

    Comment je peux faire cela ?

    Merci

  2. #2
    Membre très actif Avatar de Shuty
    Homme Profil pro
    Ingénieur en développement
    Inscrit en
    Octobre 2012
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 630
    Par défaut
    Sur dvlp on un très bon tuto sur domdocument xml:

    http://eusebius.developpez.com/php5dom/

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut
    Bonjour Shuty,

    Merci pour le document qui est très intéressant...
    Par contre je n'arrive pas trouver la solution pour mon histoire...
    voici ce que j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $output = curl_exec($curl);
    curl_close($curl); 
     
     
    //new ajout (mon extension DOM est actif dans php.ini
     
    $dom = new DomDocument();                           
    $dom->loadXML($output);	
    $trouverReponse = $dom->getElementsByTagName('response');
     
    echo "<br> Reponse : <br>" . $trouverReponse . "fin ";
     
    exit();
    et je n'arrive même pas écrire "Reponse : fin"

  4. #4
    Membre très actif Avatar de Shuty
    Homme Profil pro
    Ingénieur en développement
    Inscrit en
    Octobre 2012
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 630
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $output ='<?xml version="1.0" encoding="UTF-8"?>
    <ApiUser version="1.0" generator="zend">-<lookup><response>RESP_SUCCESS</response>-<user><nom>toto</nom><id>578</id></user><status>success</status></lookup></ApiUser>';  
     
    $xml = new DomDocument();    
    $xml->loadXML($output);	
    $link = $xml->getElementsByTagName('response')->item(0);
     
    echo $link->textContent;

    $link est un objet pas un tableau.
    Voila qui fonctionne.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut
    MerciShuty,

    Ton code marche bien , mais dans mon cas, je n'arrive pas afficher/affecter la valeur de ma variable ($output)après avoir récupéré par service web*:

    C’est 1 !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $curl = curl_init();       // Création d'une ressource cURL
    curl_setopt($curl, CURLOPT_URL, $url);     //constantes PREdéfinies parPHP : L'URL à récupérer
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);       
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);      
    $output = curl_exec($curl);                 // Recuperation du réponse / Récupération de l'URL et passage au navigateur
    curl_close($curl);
     
     
    echo "<br> <br> valeur $output :::::::::::::::::::::::::: ";
    		 echo $output;  
    		 echo "<br> Fin<br> ";
    exit();
    ce que j'obtiens :
    <?xml version="1.0" encoding="UTF-8"?>
    <ApiUser version="1.0" generator="zend">-<lookup><response>RESP_SUCCESS</response>-<user><nom>toto</nom><id>578</id></user><status>success</status></lookup></ApiUser>

    valeur :1
    Fin
    Du coup, je ne peux pas appliquer ton code...

    Pourquoi sa valeur est 1 au lieu de string qui contient le contenu XML et que je l'obtiens par $output = curl_exec($curl); ?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut
    J'ai trouvé pourqoui la valeur était 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);
    donc lorsque je met true la valeur outpout devient le contenu de XML

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    316
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 316
    Par défaut
    Merci ,,, un grand merci Shuty

  8. #8
    Membre très actif Avatar de Shuty
    Homme Profil pro
    Ingénieur en développement
    Inscrit en
    Octobre 2012
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 630
    Par défaut
    De rien, on est là pour ça.

    PS: Essais la prochaine fois d'éviter les multi post Le petit button éditer est là pour ça.

    Dimitri,

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

Discussions similaires

  1. trouver les mots dans une chaine
    Par thierry007 dans le forum VB.NET
    Réponses: 5
    Dernier message: 21/04/2010, 09h30
  2. Trouver un mots dans une phrase
    Par VEN0M1 dans le forum Débuter
    Réponses: 2
    Dernier message: 07/05/2009, 16h46
  3. [RegEx] trouver un mot dans une chaine de caractère
    Par starr dans le forum Langage
    Réponses: 2
    Dernier message: 22/06/2007, 15h36
  4. requête pour trouver un mot dans une phrase
    Par FRIGAUX dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 25/11/2006, 22h18
  5. trouver 4 mots dans une StringList..
    Par laadhar dans le forum Delphi
    Réponses: 8
    Dernier message: 19/09/2006, 15h19

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