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 :

http_build_query avec api flickr


Sujet :

Langage PHP

Vue hybride

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 31
    Par défaut http_build_query avec api flickr
    Bonsoir,
    j'aimerais comprendre le comportement de la fonction http_build_query.
    Dans une petite application qui utilise l'api de flick'r cette fonction rajoute un "index" ou du moins des caractères dans la chaine de paramètres. Le but est de récupérer des photos à partir d'une recherche par tag ( première requête) puis de récupérer les informations de chaque photos ( deuxième requête en fonction de chaque photo).
    Le code: (j'ai volontairement enlevé la clé)
    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
     
    function getPhotosNikon (){
        //Préparation de la requête
        $base_url="http://api.flickr.com/services/rest?";
        $query_string="";
        $params= array(
            "method" => "flickr.photos.search",
            "api_key" => "",
            "tags" => "nikon35mm");
        $query_string .= http_build_query($params);
        $url = $base_url.$query_string;
     
        //Envoie de la requête et reception de la reponse
        $client = curl_init($url);
        curl_setopt($client, CURLOPT_RETURNTRANSFER, 1);
        $reponse = curl_exec($client);
        curl_close;
     
        //Traitement de la réponse
        $xml = simplexml_load_string($reponse);
        foreach ($xml->photos->photo as $photo) {
            $attributs = $photo->attributes();
            $image_url = 'http://farm'.$attributs['farm'].'.static.flickr.com/'
            	.$attributs['server'].'/'.$attributs['id'].'_'.$attributs['secret'].'.jpg';
            echo '<a href=http://www.flickr.com/photos/'.$attributs['owner'].'/'
            	.$attributs['id'].'><img src="'.$image_url.'"/><br /	></a>';
     
            //Préparation de la requête pour récupérer les infos de chaque photos
            $query_string_info = '';
            $params_info = array(
                'method' => 'flickr.photos.getInfo',
                'api_key' => '',
                'photo_id' => $attributs['id'],
                'secret' => $attributs['secret']);
     
            //$query_string_info .= 'method=flickr.photos.getInfo&api_key=290a35fd4c6a80bb6e738c02a06dce24&photo_id='.$attributs['id'].'&secret='.$attributs['secret'];
            $query_string_info .= http_build_query($params_info);
            echo '<br />'.$query_string_info.'<br />';
            $url_info = $base_url.$query_string_info;
            echo $url_info.'<br />';
     
            //Envoie de la requête
            $client_info = curl_init($url_info);
            curl_setopt ($client_info, CURLOPT_RETURNTRANSFER, 1);
            $reponse_info = curl_exec($client_info);
            curl_close($client_info);
     
            //Traitement de la reponse
            $xml_info = simplexml_load_string($reponse_info);
            echo $xml_info;
            //print_r($xml_info);
     
            //Affichage des infos
            echo '<br />'.$xml_info->photo->description.'<br />';
        }
    }
    et le resultat:
    -la chaine de paramètres: method=flickr.photos.getInfo&api_key=API_KEY&photo_id%5B0%5D=6150263731&secret%5B0%5D=9d7fa99b1e
    -la requête complète: http://api.flickr.com/services/rest?...I_KEY&photo_id%5B0%5D=6150263731&secret%5B0%5D=9d7fa99b1e

    C'est la partie en rouge que je ne comprend pas, la première requête fonction sans aucun problème.
    D'avance merci pour votre aide.

  2. #2
    Membre émérite
    Inscrit en
    Juillet 2003
    Messages
    625
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 625
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    photo_id%5B0%5D = photo_id[0]
    Essayes peut être avec urldecode

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    C'est normal, $attributs['id'] est un objet SimpleXMLElement. Il faut une cast explicite en string (fonction strval ou opérateur (string)) ici pour obtenir ce que vous souhaitez.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'photo_id' => (string) $attributs['id'],

Discussions similaires

  1. [VB.NET] Listing d'un répertoire par FTP avec API
    Par joefou dans le forum VB.NET
    Réponses: 1
    Dernier message: 16/12/2005, 15h29
  2. Affichage d'image avec API Win32
    Par Chess0 dans le forum Windows
    Réponses: 12
    Dernier message: 14/12/2005, 07h14
  3. problème avec "API Windows en C"
    Par Vince-le-fou dans le forum Windows
    Réponses: 2
    Dernier message: 23/11/2005, 15h22
  4. problème de liens avec API sous VC++
    Par xavynfive dans le forum MFC
    Réponses: 7
    Dernier message: 26/08/2005, 12h01
  5. [EXE] Problème avec Api
    Par Regis.C dans le forum Général Java
    Réponses: 5
    Dernier message: 14/03/2005, 11h09

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