首页 > 解决方案 > 循环遍历 API 结果以进行分页

问题描述

我正在尝试通过 API 访问一些数据。这是我当前的代码:

$ch = curl_init("https://api.example.com/rest/1.3/analytics/affiliate/vendor/?account=xxxxx&select=EARNINGS_PER_HOP");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Page: 1', 'Accept: application/json', 'Authorization: XXXXX'));
$response = curl_exec($ch);
curl_close($ch);

if ($response) {
    $array = json_decode($response, TRUE);

    foreach ($array['rows']['row'] as $data) {
        $value = $data['data']['value']['$'];
        $dimension = $data['dimensionValue'];
        /// insert $value and $dimension into database
    }
}

我只是想从中获取一些数据并将其插入 MySQL 数据库。我当前的代码在技术上可以正常工作,但 API 只显示前 100 个结果。

如果有超过 100 个结果,它将提供数据并给出标题响应,206 Partial Content让我知道还有更多结果。要获得下一页,我必须发送Page: n标题。

正如您从上面的代码中看到的那样,我正在发送Page: 1标头。

我如何检查是否206给出了响应代码,如果是,则继续循环直到它到达200响应代码(每个循环都需要增加标题中的页码)?

标签: phpcurlphp-curl

解决方案


您可以将该代码放入函数中,然后根据您获得的响应代码以“n”作为参数调用该函数。你试过吗?您可以使用 curl_getinfo 选项 CURLINFO_RESPONSE_CODE 或 CURLINFO_HTTP_CODE 获取响应代码。


推荐阅读