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

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 99
    Points : 64
    Points
    64
    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.
    http://www.iso-country-code.com Liste des pays traduits dans pleins de langues

  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 222
    Points
    20 222
    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 du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 99
    Points : 64
    Points
    64
    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.
    http://www.iso-country-code.com Liste des pays traduits dans pleins de langues

  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 222
    Points
    20 222
    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