cURL GET-Anfrage mit PHP

Olorunfemi Akinlua 13 Juni 2022
  1. Verwenden Sie curl_init() und curl_setopt(), um eine Anfrage in PHP zu erhalten
  2. Verwenden Sie cURL mit APIs (JSON) in PHP
cURL GET-Anfrage mit PHP

Über das Web und hauptsächlich HTTPS verwenden wir GET-Anfragen, um eine spezifische Ressourcendarstellung zu erhalten. Um Daten zu erhalten, werden GET-Methoden verwendet.

Insbesondere in API- und Web-Scraping-Szenarien verwenden Entwickler sprachspezifische Methoden. Wir verwenden cURL-Funktionen, um GET-Anfragen in PHP zu verarbeiten.

Die Bibliothek cURL wickelt Operationen von der Initialisierung, dem Verbindungsaufbau und den Übertragungen bis zur Ressourcenrückgabe ab. Um all diese Operationen auszuführen, sind integrierte Funktionen wie curl_close(), curl_init() bis curl_exec() verfügbar.

Dieses Tutorial behandelt die verschiedenen Anwendungsfälle für cURL GET-Anfragen und die entsprechenden Funktionen, die dies ermöglichen.

Verwenden Sie curl_init() und curl_setopt(), um eine Anfrage in PHP zu erhalten

Das typische Format, um eine Anfrage von einem anderen Server oder Benutzer zu erhalten, umfasst die Verwendung der folgenden grundlegenden Funktionen.

curl_init(); // initializes a cURL session
curl_setopt(); // changes the cURL session behavior with options
curl_exec(); // executes the started cURL session
curl_close(); // closes the cURL session and deletes the variable made by curl_init();

Sie werden alle vier Funktionen in diesem Artikel sehen und den größten Teil des GET-Anfragecodes werden Sie mit der cURL-Bibliothek schreiben.

Nun werden wir für einige Beispielverwendungen die Variable $url mit der URL der Site zuweisen, von der wir eine Anfrage erhalten möchten, und eine cURL-Sitzung mit den curl_init()-Funktionen initiieren. Danach spezifizieren wir die Option für den cURL-Transfer, der auf der angegebenen URL durchgeführt wird.

Die erste curl_setopt()-Funktionsanweisung enthält die Option URL to fetch ​​mit dem der $url-Variable zugewiesenen Wert. Die zweite Funktionsanweisung curl_setopt() enthält die Option Rückgabe der Übertragung als String mit einem booleschen Wert.

<?php

$url = "https://reqbin.com/echo";

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

//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);

?>

Die Ausgabe des obigen PHP-Codes ist unten.

Verwenden Sie curl_init und curl_setopt, um Anfragen in PHP zu erhalten

Verwenden Sie cURL mit APIs (JSON) in PHP

Typischerweise wäre die Datenantwort bei der Interaktion mit APIs oft JSON und unter Verwendung von cURL-Funktionen können wir diese Datenobjekte in Attribut-Wert-Paaren und im Array-Format mit den Funktionen curl_getinfo() und json_encode() richtig verarbeiten, unter anderen.

Hier werden wir mit einer Demo-API Benutzer interagieren, JSON-Daten mithilfe der Bibliothek cURL abrufen und die JSON-Datei mithilfe der entsprechenden Funktion codieren.

  1. Initialisieren Sie die URL-Variable und cURL-Sitzung.

    $url = 'https://jsonplaceholder.typicode.com/users';
    // Sample example to get data.
    $resource = curl_init($url);
    
  2. Richten Sie die cURL-Optionen und Info-Variablen ein.

    curl_setopt($resource, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($resource);
    $info = curl_getinfo($resource);
    $code = curl_getinfo($resource, CURLINFO_HTTP_CODE);
    
  3. Debuggen Sie, um den Antwortstatuscode zu prüfen (optionaler Schritt), aber Sie sollten 200 sehen.

    echo $result.'<br>';
    echo "<pre>";
    print_r($info);
    echo "</pre>";
    
    // Get response status code
    echo "<pre>";
    print_r($code);
    echo "</pre>";
    
  4. Schließen Sie die cURL-Sitzung, um Ressourcen besser zu verwalten.

    curl_close($resource);
    
  5. Erstellen Sie die Array-Vorlage, um die von der API über JSON erhaltenen Daten zu speichern.

    // set_opt_array
    $user = [
    	'name' => 'John Doe',
    	'username' => 'john',
    	'email' => 'john@example.com'
    ];
    
  6. Verwenden Sie curl_init() und curl_setopt_array(), um die aus der URL geparsten JSON-Daten mit allen wichtigen Optionen zu verarbeiten.

    $resource = curl_init();
    curl_setopt_array($resource, [
    	CURLOPT_URL => $url,
    	CURLOPT_RETURNTRANSFER => true,
    	CURLOPT_POST => true,
    	CURLOPT_HTTPHEADER => ['content-type: application/json'],
    	CURLOPT_POSTFIELDS => json_encode($user),
    ]);
    
  7. Verwenden Sie die Funktionen curl_exec() und curl_close(), um die initialisierte cURL-Session auszuführen bzw. die cURL-Session zu schließen und alle Ressourcen freizugeben. In PHP 8.0.0 und höher hat die Funktion curl_close() Funktion keine Wirkung.

    $result = curl_exec($resource); // creates and returns result
    curl_close($resource);
    echo $result;
    

Die Ausgabe des Codes führt zu dem folgenden mehrdimensionalen PHP-Array.

[
  {
    "id": 1,
    "name": "Leanne Graham",
    "username": "Bret",
    "email": "Sincere@april.biz",
    "address": {
      "street": "Kulas Light",
      "suite": "Apt. 556",
      "city": "Gwenborough",
      "zipcode": "92998-3874",
      "geo": {
        "lat": "-37.3159",
        "lng": "81.1496"
      }
    },
    "phone": "1-770-736-8031 x56442",
    "website": "hildegard.org",
    "company": {
      "name": "Romaguera-Crona",
      "catchPhrase": "Multi-layered client-server neural-net",
      "bs": "harness real-time e-markets"
    }
  },
  {
    "id": 2,
    "name": "Ervin Howell",
    "username": "Antonette",
    "email": "Shanna@melissa.tv",
    "address": {
      "street": "Victor Plains",
      "suite": "Suite 879",
      "city": "Wisokyburgh",
      "zipcode": "90566-7771",
      "geo": {
        "lat": "-43.9509",
        "lng": "-34.4618"
      }
    },
    "phone": "010-692-6593 x09125",
    "website": "anastasia.net",
    "company": {
      "name": "Deckow-Crist",
      "catchPhrase": "Proactive didactic contingency",
      "bs": "synergize scalable supply-chains"
    }
  },
  {
    "id": 3,
    "name": "Clementine Bauch",
    "username": "Samantha",
    "email": "Nathan@yesenia.net",
    "address": {
      "street": "Douglas Extension",
      "suite": "Suite 847",
      "city": "McKenziehaven",
      "zipcode": "59590-4157",
      "geo": {
        "lat": "-68.6102",
        "lng": "-47.0653"
      }
    },
    "phone": "1-463-123-4447",
    "website": "ramiro.info",
    "company": {
      "name": "Romaguera-Jacobson",
      "catchPhrase": "Face to face bifurcated interface",
      "bs": "e-enable strategic applications"
    }
  },
....
]
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

Verwandter Artikel - PHP Curl