一尘不染

如何从PHP中的API读取GZIP版本的响应?

php

如何从PHP中的API中读取响应?响应为GZIP版本。我发现例如以下建议:

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

但是该功能http_inflate()在我正在使用的安装上不可用。

还有其他简单的方法可以实现它吗?


阅读 218

收藏
2020-05-29

共1个答案

一尘不染

一种很酷的方法
http://www.php.net/manual/zh/wrappers.compression.php

注意使用流包装 compress.zlib

$url = "compress.zlib://http://api.codingdict.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"))));

或使用卷曲

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

编辑-其他方法已删除,因为它们不发送Accept-Encodinghttp标头。

2020-05-29