douzhiba6873 2012-06-23 18:52
浏览 58
已采纳

如何在PHP中使用Stack Overflow API

I have the following URL:

https://api.stackexchange.com/2.0/questions?page=1&pagesize=30&order=desc&sort=activity&site=stackoverflow

When I type this URL in my browser's address bar, it gives me a JSON response, which I need in PHP. I tried using cURL to fetch it (see below code), but it didn't work — no response is printed on the page.

function get_json($url) {
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, $url);

    $data = curl_exec($ch);
    $resultCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    if ($resultCode == 200) {
        return json_decode($data);
    } else {
        return false;
    }
}

$json = get_json('https://api.stackexchange.com/2.0/questions?page=1&pagesize=30&
  key=VVq3kJHSjQ*7qgpiRaVoLA%28%28&site=stackoverflow');
echo '<pre>';
print_r($json);

How can I fetch this URL and convert it into a PHP array the right way?

  • 写回答

3条回答 默认 最新

  • drwjv28028 2012-06-23 18:59
    关注

    Last I checked, all responses from the API were gzip'd:

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

    Setting CURLOPT_ENCODING enables automatic un gzip'ing of the response, in addition to sending an Accept-Encoding: gzip in the http request, although sending that header isn't strictly required for this to work.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?