read print json_decode file_get_contents php json file-get-contents

json_decode - print json php



file_get_contents lanza 400 Error de solicitud incorrecta PHP (3)

Puede intentar utilizar curl para recuperar los datos en lugar de file_get_contents. curl tiene mejor soporte para el manejo de errores:

// make request $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://api.twitter.com/1/statuses/user_timeline/User.json"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); // convert response $output = json_decode($output); // handle error; error output if(curl_getinfo($ch, CURLINFO_HTTP_CODE) !== 200) { var_dump($output); } curl_close($ch);

Esto puede darle una mejor idea de por qué está recibiendo el error. Un error común es alcanzar el límite de velocidad en su servidor.

Solo estoy usando un file_get_contents() para obtener los últimos tweets de un usuario como este:

$tweet = json_decode(file_get_contents(''http://api.twitter.com/1/statuses/user_timeline/User.json''));

Esto funciona bien en mi host local, pero cuando lo subo a mi servidor, se produce este error:

Advertencia: file_get_contents ( http://api.twitter.com/1/statuses/user_timeline/User.json ) [function.file-get-contents]: no se pudo abrir la secuencia: ¡La solicitud HTTP falló! HTTP / 1.0 400 Bad Request ...

¿No estoy seguro de lo que podría estar causándolo?

¡Gracias por adelantado!


Puede usar file_get_contents agregando la opción ignore_errors establecida en true , de esta manera obtendrá todo el cuerpo de la respuesta en caso de error (HTTP / 1.1 400, por ejemplo) y no solo un simple false .

Puede ver un ejemplo aquí: https://.com/a/11479968/3926617

Si desea acceder a los encabezados de respuesta, puede usar $http_response_header después de la solicitud.

http://php.net/manual/en/reserved.variables.httpresponseheader.php


Solo un pequeño apéndice sobre la respuesta de Ben. De acuerdo con el manual de PHP, la opción CURLOPT_URL puede configurarse al inicializar el manejador cURL con curl_init ().

// make request $ch = curl_init("http://api.twitter.com/1/statuses/user_timeline/User.json"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); // convert response $output = json_decode($output); // handle error; error output if(curl_getinfo($ch, CURLINFO_HTTP_CODE) !== 200) { var_dump($output); } curl_close($ch);