我正在尝试使用file_get_contents()从stackoverflow api获取json响应,但是回到我身边的奇怪的字符如I–%&/mÊ{JõJ×àt¡€
$Ø@ìÁÍæ'ìiG#)«*ÊeVe] f @ etc等。
好的,地址是 http://api.stackoverflow.com/1.1/users/779187/
我的代码是
$json_res = json_decode(file_get_contents("http://api.stackoverflow.com/1.1/users/779187/"))
很明显,json_dec的响应是NULL,因为字符串不是json。
我也试过直接转储值而没有json_decode,结果是“我 - %& /mÊ{JõJ×àt”$ ...“
感谢您的帮助
答案 0 :(得分:2)
API响应是GZIP。请参阅此页解码响应:http://api.stackoverflow.com/1.1/usage/gzip
如果切换到cURL,则可以使用CURLOPT_ENCODING选项对其进行解码。
$url = 'http://api.stackoverflow.com/1.1/users/779187/';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_ENCODING, 1);
$output = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($status=='200') {
$data = json_decode($output);
echo '<pre>' . print_r($data,true) . '</pre>';
}
答案 1 :(得分:2)
使用gzdecode
解码压缩内容。如果您没有gzdecode函数,则应使用this page的实现。我已经检查过它适用于您要检索的页面。
答案 2 :(得分:0)
首先用gzinflate
解压缩。