2010-08-21 17 views
13

estoy tratando de utilizar file_get_contents() para tomar un feed de Twitter, sin embargo yo estoy haciendo la siguiente advertencia:file_get_contents() pudo abrir la secuencia:

failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request 

Mi código:

$feed = 'http://twitter.com/statuses/user_timeline.rss?screen_name=google&count=6'; 
$tweets = file_get_contents($feed); 

Estoy usando Google solo por probar. allow_url_fopen está habilitado en mi archivo php.ini.

¿Alguna idea de lo que podría estar mal?

Respuesta

32

Debe usar la extensión PHP cURL si está disponible, ya que es mucho más rápido, más potente y más fácil de depurar. Aquí hay un ejemplo que hace lo mismo que estaba tratando:

function curl($url) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    $data = curl_exec($ch); 
    curl_close($ch); 

    return $data; 
} 

$feed = 'http://twitter.com/statuses/user_timeline.rss?screen_name=google&count=6'; 
$tweets = curl($feed); 
+0

También es mucho más fácil de depurar, ya que se puede llegar a volcar la solicitud y los encabezados que envía (solicitudes con formato incorrecto es la causa habitual de HTTP 400 errores) –

+1

http://stackoverflow.com/questions/ 555523/file-get-contents-vs-curl-what-have-better-performance –

+0

Sí, aproximadamente 4-5 veces más rápido. –

0

Lo más probable es que su servidor tiene habilitado mod_security. Agregue las siguientes líneas en su .htaccess después de las reglas existentes y luego intente ver que el problema sigue ahí, después de esa adición.

<IfModule mod_security.c> 
SecFilterScanPost 
</IfModule> 
Cuestiones relacionadas