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 :

Recupération infos xml


Sujet :

Langage PHP

Vue hybride

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 99
    Par défaut Recupération infos xml
    Bonjour tout le monde.

    J'ai un soucis concernant la récupération d'infos venant d'un site de geolocalisation.
    Voici l'URL que j'appelle avec mon navigateur :
    http://open.mapquestapi.com/nominati...ails=1&lang=fr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?xml version="1.0" encoding="UTF-8" ?>
    <reversegeocode timestamp='Wed, 21 Aug 13 17:43:42 +0000' attribution='Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright' querystring='lat=33&amp;lon=44&amp;format=xml&amp;addressdetails=1&amp;lang=fr'>
     
    <result place_id="114923" osm_type="node" osm_id="21034458" ref="بغداد" lat="33.3024248" lon="44.3787992">Bagdad, Irak</result>
    <addressparts>
    <city>Bagdad</city>
    <country>Irak</country>
    <country_code>iq</country_code>
    </addressparts>
    </reversegeocode>
    Je demande des infos sur la position 33/44 et ca me donne correctement ce que je recherche. Maintenant, j'ai 5000 lignes à traiter, ma boucle fonctionne mais si j'appelle cette même URL avec simple_xml_load_file, j'obtiens ceci quand je fais un print_r du résultat:
    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
     
    SimpleXMLElement Object
    (
        [@attributes] => Array
            (
                [timestamp] => Wed, 21 Aug 13 16:24:42 +0000
                [attribution] => Data © OpenStreetMap contributors, ODbL 1.0. http://www.openstreetmap.org/copyright
                [querystring] => lat=33&lon=44&format=xml&addressdetails=1
            )
     
        [result] => بغداد, جمهورية العراق
        [addressparts] => SimpleXMLElement Object
            (
                [city] => بغداد
                [country] => جمهورية العراق
                [country_code] => iq
            )
     
    )
    A savoir que le nom de la ville a changé et est écrit en arabe (les & #1576; & #1594; & #1583;....).
    J'ai forcé en haut de mon code ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'fr-FR,fr;q=0.9,en;q=0.8';
    mais rien n'y fait.
    Faut-il modifier des paramètres de la conf PHP (ou via ini_set) pour que le serveur en face envoie les résultats avec des caractères latins ?

    Merci à ceux qui pourront m'aider.
    A bientôt.

  2. #2
    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 : 42
    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
    C'est parce que PHP ne défini l'entête Accept-Language lorsqu'il fait la requête http vers le webservice.

    Tu peux récupérer le xml en spécifiant l'entête comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $opts = array('http' =>
        array(
            'method'  => 'GET',
            'header'  => 'Accept-Language: fr\r\n',
        )
    );
     
    $context  = stream_context_create($opts);
    $xml = file_get_contents('http://open.mapquestapi.com/nominatim/v1/reverse.php?lat=33&lon=44&format=xml&addressdetails=1&lang=fr', false, $context);
    echo $xml;
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 99
    Par défaut
    Je confirme, ca fonctionne. Je sasvais que c'était un truc comme ca mais sauf erreur de ma part, il n'est pas possible de faire passer ce genre d'entete à la librairie simplexml.

    Merci beaucoup.

  4. #4
    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 : 42
    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
    Non tu ne peux pas passer de stream_context à simplexml , par contre tu peux avec DOMDocument :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    libxml_set_streams_context($context);
    $doc = DOMDocument::load('http://xxxxx');
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Recupération Infos dans une MAP
    Par Katachana dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 20/04/2007, 10h41
  2. [ADO.Net][C#] Comment recupérer infos DataRowState.Deleted ?
    Par titoux_fr dans le forum Accès aux données
    Réponses: 2
    Dernier message: 10/02/2006, 11h41
  3. [Info][XML] Informations concernant JAXB
    Par sylvain_2020 dans le forum Persistance des données
    Réponses: 2
    Dernier message: 29/11/2004, 22h47
  4. [info]xml et interface graphique.
    Par schousso dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 16/06/2004, 10h17

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