Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1673 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

   file_get_contents vers URL, ne marche pas... ? help

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

file_get_contents vers URL, ne marche pas... ? help

n°2132309
Agmoh
¯\_(ツ)_/¯
Posté le 21-03-2012 à 00:17:44  profilanswer
 

bonsoir à tous..
Ca fait deux soirs que je galère sur un petit problème de PHP.
 
Sur un site, j'essaie de faire un file_get_contents vers une URL (twitter) qui répond correctement, mais impossible depuis mon site.
Ce que je sais :
Quand je met en parametre un truc genre www.twitter.com, ça marche.
Quand je met en paramètre l'url http://api.twitter.com/1/statuses/ [...] me=_Cresus  
Ca ne marche pas, cependant, quand je regarde le code source de l'erreur, je vois :
 

Code :
  1. <p>Severity: Warning</p>
  2. <p>Message: file_get_contents(http://api.twitter.com/1/statuses/user_timeline.json?trim_user=1&amp;include_rts=1&amp;screen_name=ActuallyNPH&amp;count=3) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request
  3. </p>


 
Et effectivement quand je copie l'url avec les & version html, ça tombe en bad request.
J'ai tenté par tout les moyens à ma connaissancde de mettre l'url au bon format, rien a faire, il me génère toujours des & en version HTML...
 
 
le code est relativement simple :

Code :
  1. $url="http://api.twitter.com/1/statuses/user_timeline.json?trim_user=1&include=rts=1&screen_name=_Cresus";
  2.   $tweets = json_decode(file_get_contents($url));


 
Qu'en pensez vous ...?

mood
Publicité
Posté le 21-03-2012 à 00:17:44  profilanswer
 

n°2132310
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 21-03-2012 à 01:15:23  profilanswer
 

Essaye urlencode sur $url


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
n°2132315
Agmoh
¯\_(ツ)_/¯
Posté le 21-03-2012 à 08:20:50  profilanswer
 

Salut :)
Merci pour ta réponse. Quand j'essaye urlencode j'obtiens me meme message d'erreur avec une url différente :

Code :
  1. <p>Severity: Warning</p>
  2. <p>Message: file_get_contents(http%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fuser_timeline.json%3Ftrim_user%3D1%26include%3Drts%3D1%26screen_name%3D_Cresus) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: No such file or directory</p>

n°2132331
MEI
|DarthPingoo(tm)|
Posté le 21-03-2012 à 10:24:19  profilanswer
 

Je pense qu'il faut URL encorde que chaque param de la requete... et pas l'URL complete.


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
n°2132371
gatsu35
Blablaté par Harko
Posté le 21-03-2012 à 14:17:35  profilanswer
 

et pourquoi ne pas utiliser ce qui est fait pour : curl, wget ?


---------------
Blablaté par Harko
n°2132403
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 21-03-2012 à 16:03:49  profilanswer
 

gatsu35 a écrit :

et pourquoi ne pas utiliser ce qui est fait pour : curl, wget ?


 
T'as pas forcément cURL ou Wget si le serveur ne t'appartient pas
 

MEI a écrit :

Je pense qu'il faut URL encorde que chaque param de la requete... et pas l'URL complete.


 
Oui


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
n°2132407
gatsu35
Blablaté par Harko
Posté le 21-03-2012 à 17:05:48  profilanswer
 

http://php.net/manual/fr/function. [...] ntents.php
 

Citation :


Si vous ouvrez une URI avec des caractères spéciaux, comme des espaces, vous devez encoder cette URI avec la fonction urlencode().  


---------------
Blablaté par Harko
n°2132434
Agmoh
¯\_(ツ)_/¯
Posté le 22-03-2012 à 00:25:27  profilanswer
 

J'ai essayé ça :

Code :
  1. $url="http://api.twitter.com/1/statuses/user_timeline.json?trim_user=".urlencode("1" )."&include=rts=".urlencode("1" )."&screen_name=".urlencode("_Cresus" );
  2. $tweets = json_decode(file_get_contents($url));


Même problème... Les & sont convertie en &amp; et l'appel foire...

n°2132435
Agmoh
¯\_(ツ)_/¯
Posté le 22-03-2012 à 00:37:37  profilanswer
 

gatsu35 a écrit :

http://php.net/manual/fr/function. [...] ntents.php
 

Citation :


Si vous ouvrez une URI avec des caractères spéciaux, comme des espaces, vous devez encoder cette URI avec la fonction urlencode().  



 
Je n'ai pas d'espace dans le lien... juste des & commerciaux

n°2132436
Agmoh
¯\_(ツ)_/¯
Posté le 22-03-2012 à 00:44:31  profilanswer
 

meme si je fais un truc sauvage dans ce genre là :  
   $tweets = json_decode(file_get_contents((str_replace('&amp;','&',$url))));
 
ca me laisse des &amp;...Je comprend rien.

mood
Publicité
Posté le 22-03-2012 à 00:44:31  profilanswer
 

n°2132448
gatsu35
Blablaté par Harko
Posté le 22-03-2012 à 08:15:55  profilanswer
 

tu es sourd ou quoi ???? on t'a dit un urlencode, et il faut encoder plus que les &.

 

Donc tu fais simplement :
file_get_contents(urlencode($url))

 

Ah et il faut aussi que tu sois identifié, ça signifie que tu as besoin de gérer une session, donc ce n'est pas forcément le file_get_contents qu'il faut utiliser.

Message cité 1 fois
Message édité par gatsu35 le 22-03-2012 à 08:17:14

---------------
Blablaté par Harko
n°2132450
Agmoh
¯\_(ツ)_/¯
Posté le 22-03-2012 à 08:35:56  profilanswer
 


 

gatsu35 a écrit :

tu es sourd ou quoi ???? on t'a dit un urlencode, et il faut encoder plus que les &.
 
Donc tu fais simplement :  
file_get_contents(urlencode($url))
 
Ah et il faut aussi que tu sois identifié, ça signifie que tu as besoin de gérer une session, donc ce n'est pas forcément le file_get_contents qu'il faut utiliser.


 
Bonjour :)
 
Non je ne suis pas sourd. J'ai testé plus haut l'urlencode sur l'url enitère, et j'ai répondu ça :
 

Agmoh a écrit :

Salut :)
Merci pour ta réponse. Quand j'essaye urlencode j'obtiens me meme message d'erreur avec une url différente :

Code :
  1. <p>Severity: Warning</p>
  2. <p>Message: file_get_contents(http%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fuser_timeline.json%3Ftrim_user%3D1%26include%3Drts%3D1%26screen_name%3D_Cresus) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: No such file or directory</p>



 
L'url encode me convertie les &amps; en %26, ce qui change quelque chose, mais ne m'avance pas davantage.
 
MEI m'a conseillé de mettre urlencode uniquement sur les paramètres, ce que j'ai essayé.
 
Sans plus de resultats.
 
Et concernant la session, l'URL que j'appelle (http://api.twitter.com/1/statuses/user_timeline.json?trim_user=1&include=rts=1&screen_name=_Cresus) c'est une api twitter, conçu pour ça, donc je pense pas avoir a gerer l'authentification puisque le flux est accessible en public, si ?
 

n°2132452
gatsu35
Blablaté par Harko
Posté le 22-03-2012 à 09:12:37  profilanswer
 

Agmoh a écrit :

J'ai essayé ça :

Code :
  1. $url="http://api.twitter.com/1/statuses/user_timeline.json?trim_user=".urlencode("1" )."&include=rts=".urlencode("1" )."&screen_name=".urlencode("_Cresus" );
  2. $tweets = json_decode(file_get_contents($url));



Si c'est pour me parler de ce morceau de code sale, non tu n'as pas fait ce qu'on te di, ou alors tu n'as rien compris. c'est toute l'url que tu dois urlencode pas des petits morceaux.
Quand on urlencode une url, on la fait entière pas juste des morceaux.
Et oui, il faut que tu gère l'authent, donc regarde un tutoriel pour savoir comment faire.

Message cité 1 fois
Message édité par gatsu35 le 22-03-2012 à 09:13:47

---------------
Blablaté par Harko
n°2132483
Agmoh
¯\_(ツ)_/¯
Posté le 22-03-2012 à 12:24:06  profilanswer
 

gatsu35 a écrit :


Si c'est pour me parler de ce morceau de code sale, non tu n'as pas fait ce qu'on te di, ou alors tu n'as rien compris. c'est toute l'url que tu dois urlencode pas des petits morceaux.
Quand on urlencode une url, on la fait entière pas juste des morceaux.
Et oui, il faut que tu gère l'authent, donc regarde un tutoriel pour savoir comment faire.


 
 
L'amabilité ne semble pas faire partie de vos plus grandes qualités.
Merci de m'avoir pris pour un imbécile, malheureusement c'est vous qui ne lisez pas ce qu'on vous écrit, ou qui ne comprenez vraiment rien.
 
Quand on me dit :
 

WiiDS a écrit :

Essaye urlencode sur $url


 
Et que je répond :
 

Agmoh a écrit :

Salut :)
Merci pour ta réponse. Quand j'essaye urlencode j'obtiens me meme message d'erreur avec une url différente :

Code :
  1. <p>Severity: Warning</p>
  2. <p>Message: file_get_contents(http%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fuser_timeline.json%3Ftrim_user%3D1%26include%3Drts%3D1%26screen_name%3D_Cresus) [<a href='function.file-get-contents'>function.file-get-contents</a>]: failed to open stream: No such file or directory</p>



 
 Il y a un mot que vous n'avez pas compris ?
Ca signifie quoi pour vous ? Je suis sur que vous pouvez trouver tout seul, si vous faites un effort.
 
Si c'est pour être si peu constructif et méprisant, je te remercie mais je préfère travailler avec des gens de bonne intelligence.

n°2132535
Agmoh
¯\_(ツ)_/¯
Posté le 22-03-2012 à 17:20:49  profilanswer
 

Ne pensez vous pas à un problème d'encodage de la page ? car je me demande si c'est pas ça le fond du problème...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

   file_get_contents vers URL, ne marche pas... ? help

 

Sujets relatifs
Code vba exportation requête acces vers Exceljavascript HELP !!!!!!!!!
code ça marche mais se n'est pas une bonne executionHelp comparaison de deux fichier perl
Transfert de variable en URLlittle endian vers big endian pour un 40 bits
Help please un site de collecte d'adresses emailsAdresses URL très longues ...
Mon nouveau programme: un réducteur d'URLJSON php vers jquery Ajax problem
Plus de sujets relatifs à : file_get_contents vers URL, ne marche pas... ? help


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR