搜索

首页  >  问答  >  正文

通过循环的PHP API cURL,获取并写入文件中的所有分页数据

<p>作为一个对于进行API请求和适当编码有些新手,我希望能够得到帮助,编写适当的循环代码,将光标移动到下一页并返回所有数据,直到没有更多的页面为止。我的初始代码可以获取50个结果的第一页,并且没有循环语句。我只需要帮助编写适当的循环。</p> <p>初始代码如下。它可以很好地获取结果的第一页。我将结果输出到屏幕上,只是为了测试看看输出的内容。代码中没有任何错误处理。</p> <p><strong>我需要在代码中添加循环,直到hasMore为false,然后将数据写入/追加到我的文件中。</strong></p> <p>API文档指示我可以通过以下方式移动光标并获取下一页。 此端点通过光标进行分页。pageInfo属性将包含有关是否有更多结果的信息:{"cursor": "Mg", "hasMore": true}。如果hasMore为true,则可以将光标作为查询字符串的一部分传递到下一个API请求中,以获取下一页的结果,例如?cursor=Mg。</p> <pre class="brush:php;toolbar:false;"><?php $url = "myURL/incoming/v2/content"; $curl = curl_init($url); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $headers = array( "Accept: application/json", "Authorization: Bearer key", ); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); //for debug only! curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); $resp = curl_exec($curl); curl_close($curl); var_dump($resp); file_put_contents('CURL-CONTENT.txt', $resp); ?></pre></p>
P粉652523980P粉652523980571 天前716

全部回复(1)我来回复

  • P粉275883973

    P粉2758839732023-09-02 00:29:56

    您遗漏了一些细节。我可以给您一些概括性的帮助。
    这可能足以让您走上正轨。

    file_put_contents('CURL-CONTENT.txt',''); // 创建文件并清空其内容(如果文件存在)
    $url = "myURL/incoming/v2/content/";
    while(true){
      $curl = curl_init($url);
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      
      $headers = array(
         "Accept: application/json",
         "Authorization: Bearer key",
      );
      curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
      // 仅用于调试!
      curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
      
      $resp = curl_exec($curl);
      curl_close($curl);
      var_dump($resp);
      file_put_contents('CURL-CONTENT.txt', $resp,FILE_APPEND); // 追加到文件中
     // 获取hasMore的值。
      if(!hasMore){break;}
     // 此时必须还有更多内容,因此准备下一个URL
      $url = "myURL/incoming/v2/content/?Cursor=Mg";
    }

    回复
    0
  • 取消回复