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

file_get_contents vers URL, ne marche pas... ? help - PHP - Programmation

Marsh Posté le 21-03-2012 à 00:17:44    

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 ...?

Reply

Marsh Posté le 21-03-2012 à 00:17:44   

Reply

Marsh Posté le 21-03-2012 à 01:15:23    

Essaye urlencode sur $url


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 21-03-2012 à 08:20:50    

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>

Reply

Marsh Posté le 21-03-2012 à 10:24:19    

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 |
Reply

Marsh Posté le 21-03-2012 à 14:17:35    

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


---------------
Blablaté par Harko
Reply

Marsh Posté le 21-03-2012 à 16:03:49    

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
Reply

Marsh Posté le 21-03-2012 à 17:05:48    

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
Reply

Marsh Posté le 22-03-2012 à 00:25:27    

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...

Reply

Marsh Posté le 22-03-2012 à 00:37:37    

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

Reply

Marsh Posté le 22-03-2012 à 00:44:31    

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.

Reply

Marsh Posté le 22-03-2012 à 00:44:31   

Reply

Marsh Posté le 22-03-2012 à 08:15:55    

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
Reply

Marsh Posté le 22-03-2012 à 08:35:56    


 

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 ?
 

Reply

Marsh Posté le 22-03-2012 à 09:12:37    

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
Reply

Marsh Posté le 22-03-2012 à 12:24:06    

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.

Reply

Marsh Posté le 22-03-2012 à 17:20:49    

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...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed