2011-12-20 8 views
7

Come posso leggere una risposta da Stackoverflow API in PHP? La risposta è GZIP-ed. Ho trovato ad es. la seguente proposta:Come posso leggere la risposta GZIP-edita dall'API Stackoverflow in PHP?

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

ma la funzione http_inflate() non è disponibile per l'installazione che sto usando.

Ci sono altri modi semplici per realizzarlo?

risposta

18

Un modo fresco http://www.php.net/manual/en/wrappers.compression.php

noti l'impiego di un involucro flusso, 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 usando arricciatura

$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-- altri metodi rimosso perché non inviano un hea Accept-Encoding http der.

+0

Questo funziona davvero! Ho anche provato 'compress.zlib' prima, ma non ho formattato correttamente l'url completo. Grazie (+1)! – Jiri

+0

facilmente il metodo migliore (stream wrapper) – Hamish

+0

'gzdecode()' non è disponibile sulla mia installazione. – Jiri

Problemi correlati