2011-12-20 23 views
7

Làm cách nào để đọc phản hồi từ API Stackoverflow trong PHP? Câu trả lời là GZIP-ed. Tôi đã tìm thấy, ví dụ: gợi ý sau:Làm cách nào để đọc phản hồi GZIP-ed từ API Stackoverflow trong PHP?

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

nhưng chức năng http_inflate() không có sẵn trong quá trình cài đặt mà tôi đang sử dụng.

Có một số cách dễ dàng khác để thực hiện nó không?

Trả lời

18

Một cách mát http://www.php.net/manual/en/wrappers.compression.php

Thông báo việc sử dụng một wrapper suối, 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")))); 

hoặc sử dụng curl

$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-- phương pháp khác bị loại bỏ bởi vì họ không gửi Accept-Encoding http hea der.

+0

Điều này thực sự hiệu quả! Tôi cũng đã thử 'compress.zlib' trước đây, nhưng không định dạng url hoàn chỉnh đúng cách. Cảm ơn (+1)! – Jiri

+0

dễ dàng phương pháp tốt nhất (trình bao bọc luồng) – Hamish

+0

'gzdecode()' không có sẵn trong quá trình cài đặt của tôi. – Jiri

Các vấn đề liên quan