Получение null в качестве ответа от API переполнения стека с помощью PHP

Я использую этот код для PHP, чтобы получить репутацию Stack Overflow.

$feed = json_decode(file_get_contents("http://api.stackexchange.com/2.1/users/22656?order=desc&sort=reputation&site=stackoverflow&filter=!*MxOyD8qN0Yghnep", true), true); $array = $feed['items'][0]; $rep = $array['reputation']; echo $rep; 

Но я получаю null для фида. Также учетная запись пользователя – Jon Skeet, где я получаю ID 22656. Как я могу это исправить?

Проблема в том, что ответ также gzipped.

Мое предпочтительное исправление заключалось бы в использовании curl с параметром CURLOPT_ENCODING.

 <?php function curl($url){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_TIMEOUT, 30); curl_setopt($curl, CURLOPT_USERAGENT, 'cURL'); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_ENCODING , "gzip");//<< Solution $result = curl_exec($curl); curl_close($curl); return $result; } $feed = curl("http://api.stackexchange.com/2.1/users/22656?order=desc&sort=reputation&site=stackoverflow&filter=!*MxOyD8qN0Yghnep"); $feed = json_decode($feed,true); $rep = $feed['items'][0]['reputation']; echo $rep;//531776 ?> 

Хотя вы можете использовать обычный FGC, а затем раздувать ответ обратно в несжатый.

 <?php $feed = file_get_contents('http://api.stackexchange.com/2.1/users/22656?order=desc&sort=reputation&site=stackoverflow&filter=!*MxOyD8qN0Yghnep'); $feed = gzinflate(substr($feed, 10, -8)); $feed = json_decode($feed,true); $rep = $feed['items'][0]['reputation']; echo $rep;//531776 ?>