Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML
XML Forum d'entraide sur XML avec PHP. Exemples : SimpleXML, OpenXML... Avant de poster -> FAQ XML, Cours XML et Sources XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/07/2007, 21h40   #1
Rédacteur

 
Avatar de Louis-Guillaume Morand
 
Homme Louis-Guillaume MORAND
Consultant @ Microsoft
Inscription : mars 2003
Messages : 10 713
Détails du profil
Informations personnelles :
Nom : Homme Louis-Guillaume MORAND
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant @ Microsoft
Secteur : Conseil

Informations forums :
Inscription : mars 2003
Messages : 10 713
Points : 15 946
Points : 15 946
Par défaut [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 :
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 :
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
Louis-Guillaume Morand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2007, 22h12   #2
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
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 :
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;
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2007, 22h22   #3
Rédacteur

 
Avatar de Louis-Guillaume Morand
 
Homme Louis-Guillaume MORAND
Consultant @ Microsoft
Inscription : mars 2003
Messages : 10 713
Détails du profil
Informations personnelles :
Nom : Homme Louis-Guillaume MORAND
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant @ Microsoft
Secteur : Conseil

Informations forums :
Inscription : mars 2003
Messages : 10 713
Points : 15 946
Points : 15 946
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
__________________
moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom
Louis-Guillaume Morand est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h16.


 
 
 
 
Partenaires

Hébergement Web