使用PHP从Stack Overflow API获取空作为响应 [英] Getting null as response from Stack Overflow API with PHP
本文介绍了使用PHP从Stack Overflow API获取空作为响应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我将此代码用于PHP以获取Stack Overflow信誉.
I use this code for PHP to get Stack Overflow reputation.
$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,我从那里获得ID22656.如何解决此问题?
But I get null
for feed. Also user account is Jon Skeet which is where I get the ID 22656. How can I fix this?
推荐答案
问题是响应也被压缩了.
The problem is that the response is also gzipped.
我的首选解决方法是使用带有CURLOPT_ENCODING选项的curl.
My preferred fix would be to use curl, with CURLOPT_ENCODING option.
<?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,然后将响应膨胀回未压缩状态.
Though, you can use normal FGC, then inflate the response back into uncompressed.
<?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
?>
这篇关于使用PHP从Stack Overflow API获取空作为响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文