2011-12-20 6 views
7

Jak mogę odczytać odpowiedź od Stackoverflow API w PHP? Odpowiedź jest GZIP-ed. Znalazłem np. następujących sugestii:Jak mogę odczytać odpowiedź GZIP-ed z Stackoverflow API w PHP?

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

http_inflate() ale funkcja nie jest dostępna w instalacji, które używam.

Czy są jeszcze inne proste sposoby, aby to osiągnąć?

Odpowiedz

18

chłodny sposób http://www.php.net/manual/en/wrappers.compression.php

Wskazówki wykorzystanie owijki strumienia, 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")))); 

lub za pomocą skręcania

$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-- inne sposoby usuwa ponieważ nie wysyłają http hea der.

+0

To naprawdę działa! Próbowałem wcześniej 'compress.zlib', ale nie sformatowałem poprawnie pełnego adresu URL. Dzięki (+1)! – Jiri

+0

łatwo najlepsza metoda (stream wrapper) – Hamish

+0

'gzdecode()' nie jest dostępne w mojej instalacji. – Jiri

Powiązane problemy