首頁  >  問答  >  主體

透過循環的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粉652523980437 天前600

全部回覆(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
  • 取消回覆