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

Bibliothèques et frameworks PHP Discussion :

[XML] [EXPAT] Lecture d'un XML distant incomplète


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut [XML] [EXPAT] Lecture d'un XML distant incomplète
    Bonjour,

    J'ai besoin pour un projet perso de lire en AJAX un fichier XML généré sur un serveur distant et parce que certains browsers comme FF interdisent l'ajax en cross-scripting, il faut d'abord rappartrier le fichier xml distant puis le parser "en local" via ajax.

    Bref, ce qui m'interesse,c'est cette page là qui génère un fichier XML relativement long

    donc sur mon serveur, j'ai une page php qui contient le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    header("content-type: text/xml");
     
        $handle = fopen($url, "rb");
        $contents = '';
        while (!feof($handle)) {
            $contents .= fread($handle, 8200);
        }
        fclose($handle);
     
        echo $contents;
    qui lit la page et la réécrit tout simplement. ca marche parfaitement avec pleins d'autres webservices.

    ce qui m'embete c'est que cette page php me retourne ceci:
    Code XML : 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
    57
    58
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!--This document is intended only for use by authorized licensees of The Weather Channel. Unauthorized use is prohibited. Copyright 1995-2005, The Weather Channel Interactive, Inc. All Rights Reserved.-->
    <weather ver="2.0">
      <head>
        <locale>en_US</locale>
        <form>MEDIUM</form>
        <ut>F</ut>
        <ud>mi</ud>
     
        <us>mph</us>
        <up>in</up>
        <ur>in</ur>
      </head>
      <loc id="UKXX0106">
        <dnam>Oxford, United Kingdom</dnam>
        <tm>8:38 PM</tm>
     
        <lat>51.7528</lat>
        <lon>-1.2546</lon>
        <sunr>4:55 AM</sunr>
        <suns>9:24 PM</suns>
        <zone>1</zone>
      </loc>
     
      <cc>
        <lsup>7/7/07 7:50 PM Local Time</lsup>
        <obst>Benson, United Kingdom</obst>
        <tmp>63</tmp>
        <flik>63</flik>
        <t>Partly Cloudy</t>
     
        <icon>30</icon>
        <bar>
          <r>30.03</r>
          <d>steady</d>
        </bar>
        <wind>
          <s>7</s>
     
          <gust>N/A</gust>
          <d>260</d>
          <t>W</t>
        </wind>
        <hmid>59</hmid>
        <vis>6.2</vis>
     
        <uv>
          <i>N/A</i>
          <t>N/A</t>
        </uv>
        <dewp>48</dewp>
        <moon>
          <icon>22</icon>
     
          <t>Last Quarter</t>
        </moon>
      </cc>
    </weather>
    bref, qu'une partie du fichier XML et bien sûr, celle qui me manque est celle qui m'interesse.

    c'est comme si la page détectait qu'elle était "aspirée" par un autre site et bloquait cela. qu'en pensez-vous? y voyez-vous une alternative? envoyer via php, un code pour faire croire que c'est un browser ou autre

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 719
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 719
    Par défaut
    vérifie l'URL que tu mets dans $url parce que quand j'utilise ton code PHP j'obtiens le bon résultat mais quand j'ôte "&dayf=4" à la fin, j'obtiens le résultats sans la balise "dayf"

    et pour le code tu peux utiliser la fonction "file_get_contents" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $url = 'http://xoap.weather.com/weather/local/UKXX0106?cc=*&unit=s&prod=xoap&par=1043275821&key=360526d06ce05aa1&dayf=4';
     
    header('Content-type: text/xml');
     
    $contenu = file_get_contents($url);
     
    echo $contenu;

  3. #3
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    je pense que je viens trouver.
    en fait je passe en parametre quelque chose qui a un format de parametre

    rss.php?url=http://xoap.weather.com/weather/local/UKXX0106?prod=xoap&par=1043275821&key=360526d06ce05aa1&dayf=4
    en rouge, mon fichier php et donc comme j'ai pas encodé les caracteres eperluettes il s'arrete avant la fin de l'url qui n'est pas complete.

    tu m'as aidé à mettre le doigt dessus. je vais voir comment encoder ca aisément en Javascript. merci mathieu


    edit: bon bah suffisait d'appeler la méthode escape(). de tte façon, va falloir que je l'utilise pour éviter les XSS

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

Discussions similaires

  1. [SimpleXML] Lecture d'un fichier xml distant
    Par Palca dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/02/2008, 15h26
  2. Traitement d'un fichier XML distant
    Par slytech dans le forum ASP
    Réponses: 5
    Dernier message: 17/11/2006, 11h09
  3. Appel et traitement d'un XML distant
    Par toutoune60 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 22/10/2006, 22h13
  4. [XSLT] Appliquer un traitement xslt sur un fichier XML distant
    Par mabig dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 14/03/2006, 09h38
  5. Réponses: 2
    Dernier message: 17/12/2005, 20h07

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