Heim  >  Fragen und Antworten  >  Hauptteil

Erhalten und schreiben Sie alle paginierten Daten in einer Datei über die PHP-API cURL in einer Schleife

<p>Als Neuling in der Erstellung von API-Anfragen und der entsprechenden Codierung würde ich gerne dabei helfen, den entsprechenden Code zu schreiben, um eine Schleife auszuführen, den Cursor auf die nächste Seite zu bewegen und alle Daten zurückzugeben, bis keine Seiten mehr vorhanden sind. Mein ursprünglicher Code erhält die erste Seite mit 50 Ergebnissen ohne Schleife. Ich brauche nur Hilfe beim Schreiben einer richtigen Schleife. </p> <p>Der ursprüngliche Code lautet wie folgt. Es funktioniert gut, die erste Ergebnisseite zu erhalten. Ich gebe die Ergebnisse nur zum Testen auf dem Bildschirm aus, um zu sehen, wie die Ausgabe aussieht. Der Code enthält keine Fehlerbehandlung. </p> <p><strong>Ich muss eine Schleife in meinen Code einfügen, bis hasMore false ist, und dann die Daten in meine Datei schreiben/anhängen. </strong></p> <p>Aus der API-Dokumentation geht hervor, dass ich den Cursor wie folgt bewegen und zur nächsten Seite gelangen kann. Dieser Endpunkt führt die Paginierung über den Cursor durch. Das pageInfo-Attribut enthält Informationen darüber, ob weitere Ergebnisse vorliegen: {"cursor": "Mg", "hasMore": true}. Wenn hasMore wahr ist, kann der Cursor als Teil der Abfragezeichenfolge an die nächste API-Anfrage übergeben werden, um die nächste Ergebnisseite zu erhalten, z. B. ?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( „Akzeptieren: application/json“, „Autorisierung: Inhaberschlüssel“, ); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); //Nur zum Debuggen! 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 Tage vor599

Antworte allen(1)Ich werde antworten

  • 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";
    }

    Antwort
    0
  • StornierenAntwort