2011-12-20 6 views
7

¿Cómo puedo leer una respuesta de Stackoverflow API en PHP? La respuesta es GZIP-ed. Encontré, p. la siguiente sugerencia:¿Cómo puedo leer la respuesta GZIP-ed de Stackoverflow API en PHP?

$url = "http://api.stackoverflow.com/1.1/questions/" . $question_id; 
$data = file_get_contents($url); 
$data = http_inflate($data); 

pero la función http_inflate() no está disponible en la instalación que estoy usando.

¿Hay alguna otra manera fácil de lograrlo?

Respuesta

18

Una manera fresca http://www.php.net/manual/en/wrappers.compression.php

Aviso el uso de una envoltura de flujo, compress.zlib

$url = "compress.zlib://http://api.stackoverflow.com/1.1/questions/" . $question_id; 
echo $data = file_get_contents($url, false, stream_context_create(array('http'=>array('header'=>"Accept-Encoding: gzip\r\n")))); 

o el uso de enrollamiento

$ch = curl_init(); 
curl_setopt_array($ch, array(
    CURLOPT_URL => $url 
    , CURLOPT_HEADER => 0 
    , CURLOPT_RETURNTRANSFER => 1 
    , CURLOPT_ENCODING => 'gzip' 
)); 
echo curl_exec($ch); 

edited-- otros métodos eliminan porque no envían un Accept-Encoding http hea der.

+0

Esto funciona de verdad! También probé 'compress.zlib' antes, pero no formateé la URL completa correctamente. Gracias (+1)! – Jiri

+0

fácilmente el mejor método (contenedor de flujo) – Hamish

+0

'gzdecode()' no está disponible en mi instalación. – Jiri

Cuestiones relacionadas