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);