curl ist ein Befehlszeilentool und eine Bibliothek, die zur Übertragung von Daten mit URLs verwendet wird. Im Zusammenhang mit der Webentwicklung ermöglicht curl Benutzern, Anfragen zu stellen und mit verschiedenen Internetressourcen wie Websites und APIs direkt von der Befehlszeile oder über Skripte zu interagieren.
curl unterstützt eine Vielzahl von Protokollen, darunter HTTP, HTTPS, FTP und FTPS, und ist damit unglaublich vielseitig für Aufgaben wie Dateiübertragungen, Datenabrufe und API-Integration. Die Fähigkeit von curl, komplexe Vorgänge zu verarbeiten und verschiedene Arten von Anfragen zu senden, hat es zu einem unverzichtbaren Tool gemacht, das eine nahtlose Kommunikation zwischen Anwendungen und Remote-Servern ermöglicht. Seine Flexibilität und Benutzerfreundlichkeit machen es zu einem grundlegenden Bestandteil moderner Webentwicklungsworkflows.
GET-Anfragen sind eine entscheidende Komponente in der Webkommunikation, die darauf ausgelegt sind, Informationen oder Daten von einer bestimmten Ressource auf einem Webserver abzurufen. In diesem Tutorial erfahren Sie, wie Sie curl verwenden, um eine GET-Anfrage mit PHP zu stellen.
Was ist eine GET-Anfrage?
Eine GET-Anfrage ist eine HTTP-Methode , die entwickelt wurde, um Informationen oder Daten von einer angegebenen Ressource auf einem Webserver abzurufen. Wenn Sie beispielsweise eine URL in Ihren Webbrowser eingeben und die Eingabetaste drücken, lösen Sie eine GET-Anfrage aus. Der Browser stellt eine GET-Anfrage an den Server und gibt eine Webseite zurück, die im Browser angezeigt wird.
Der Zweck einer GET-Anfrage besteht darin, den Server nach einer bestimmten Ressource zu fragen, unabhängig davon, ob es sich um eine HTML-Seite, ein Bild, ein Dokument oder sogar Daten aus einer API handelt. Die Einfachheit der GET-Anfrage liegt in ihrer Methode; es handelt sich um eine idempotente Operation, was bedeutet, dass sie den Status des Servers oder der angeforderten Ressource nicht ändern sollte. Eine GET-Anfrage ist schreibgeschützt und beinhaltet normalerweise nicht das Senden von Daten oder das Vornehmen von Änderungen am Server; ihre Hauptfunktion ist das Abrufen von Daten.
GET-Anfragen unterstützen auch das Anhängen von Schlüssel-Wert-Paaren, sogenannten Abfrageparametern, an die URL. Mit den Abfrageparametern können Sie genau angeben, was Sie möchten. Wenn Sie beispielsweise in einer Suchmaschine nach etwas suchen, wird die von Ihnen eingegebene Abfrage als eine Reihe von Parametern in einer GET-Anfrage an den Server der Suchmaschine übergeben. Der Server verarbeitet diese Parameter, ruft die relevanten Suchergebnisse ab und sendet sie als Antwort zurück, die dann in Ihrem Webbrowser angezeigt wird.
Es ist wichtig zu beachten, dass GET-Anfragen Daten in der URL preisgeben und daher nicht zum Senden sensibler oder vertraulicher Informationen geeignet sind, da die Parameter für jeden sichtbar sind, der die URL sehen kann.
Implementieren einer GET-Anfrage mit curl in PHP
In diesem Abschnitt erfahren Sie, wie Sie curl-Sessions initialisieren, die URL und andere spezifische Optionen festlegen, bestimmte Parameter festlegen, Anfragen an Remote-Ressourcen senden und Antworten in Ihren PHP-Anwendungen verarbeiten.
Dazu müssen Sie sicherstellen, dass Ihre PHP-Version curl unterstützt. Bei den meisten modernen PHP-Installationen ist curl standardmäßig aktiviert, aber es ist immer eine gute Idee, zu überprüfen, ob Sie es haben. Sie können Ihre PHP-Version und Konfiguration mit der Funktion phpinfo()
bestätigen. Erstellen Sie dazu einen Ordner mit dem Namen php-curl
und darin eine Datei mit dem Namen info.php
. Fügen Sie den folgenden Code in die Datei ein:
<?php
phpinfo();
Führen Sie in Ihrem Terminal den Befehl php -S localhost:8000
aus und navigieren Sie in Ihrem Browser zu http://localhost:8000/info.php
. Scrollen Sie auf der resultierenden Webseite nach unten zum Abschnitt curl und bestätigen Sie, dass curl-Support aktiviert ist:
Nachdem Sie bestätigt haben, dass curl aktiviert ist und bevor Sie eine curl-Session initialisieren, müssen Sie eine neue Datei mit dem Namen curl.php
in Ihrem Projekt-Hauptverzeichnis erstellen. Fügen Sie dann den folgenden Code zu Ihrer neuen curl.php
-Datei hinzu:
<?php
$ch = curl_init();
Dies initiiert eine curl-Sitzung mit der curl_init()
-Funktion . Diese Funktion initialisiert eine neue curl-Session und gibt eine curl-Handle-Instanzzurück, ein entscheidendes Tool für weitere Operationen mit curl, wie das Einstellen von Optionen und das Senden von Anfragen.
Stellen Sie die URL und andere Optionen ein
Die Konfiguration von curl-Optionen, einschließlich der Einstellung der URL, ist ein entscheidender Teil der Erstellung von HTTP-Requests mit curl in PHP. Es legt die Grundlage des HTTP-Request fest und bestimmt den Zielserver, die Art der gestellten Anfrage (GET, POST usw.) und alle erforderlichen Authentifizierungen oder Parameter.
PHP bietet die curl_setopt()
-Funktion, die es einfach macht, die verschiedenen Optionen für ein curl-Session-Handle festzulegen, und es ermöglicht Ihnen, das Verhalten der curl-Anfrage anzupassen, indem Sie verschiedene Parameter und Werte angeben.
Die curl_setopt ()
-Funktion hat die Form curl_setopt curl_setopt(CurlHandle $handle, int $option, mixed $value)
. $handle
ist das Handle, das von curl_init()
-Funktion zurückgegeben wird}, $option
steht für die spezifische Option, die Sie festlegen möchten, und $value
steht für den Wert, den Sie auf die angegebene Option setzen möchten.
Um die URL festzulegen, fügen Sie den folgenden Code zur curl.php
-Datei hinzu:
$url = "https://dummyjson.com/products";
curl_setopt($ch, CURLOPT_URL, $url);
Dieser Code verwendet die curl_setopt()
-Funktion , um die URL-Option für das curl-Session-Handle festzulegen. CURLOPT_URL
ist eine Konstante, die die Option zum Festlegen der URL für die curl-Anfrage angibt.
Schauen wir uns nun einige andere Optionen an, die Sie konfigurieren können.
Um die curl-Option für ein kontrollierteres HTTP-Request-Erlebnis festzulegen, fügen Sie der curl.php
-Datei den folgenden Code hinzu:
// Set a timeout for the cURL request
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
// return the response from the server as a string instead of outputting it directly
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// avoid following redirects, if any
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
In diesem Code ist CURLOPT_TIMEOUT
mit einem Wert von 30
konfiguriert, was eine maximale Ausführungszeit von dreißig Sekunden für die curl-Anfrage definiert. Dadurch wird sichergestellt, dass, wenn die Anfrage länger als dreißig Sekunden dauert, eine Zeitüberschreitung eintritt, wodurch ein längeres Warten verhindert wird.
CURLOPT_RETURNTRANSFER
ist auf true
gesetzt, wodurch curl angewiesen wird, die Antwort vom Server als Zeichenfolge zurückzugeben, anstatt sie direkt anzuzeigen. Dadurch können Sie die Antwortdaten innerhalb des PHP-Skripts erfassen und bearbeiten.
Zuletzt ist CURLOPT_FOLLOWLOCATION
auf false
gesetzt, was darauf hinweist, dass curl nicht automatisch HTTP-Weiterleitungen folgen sollte. Durch die Deaktivierung der automatischen Weiterleitung behält das Skript die Kontrolle über den Request-Flow und ermöglicht eine benutzerdefinierte Behandlung von Weiterleitungsantworten.
Weitere Informationen zu anderen Optionen, die Sie konfigurieren können, finden Sie in der PHP-Dokumentation.
Ausführen der GET-Anfrage
Um die Anfrage auszuführen und die Antwort anzuzeigen, fügen Sie den folgenden Code zur curl.php
-Datei hinzu:
// Execute the cURL request and capture the response
$response = curl_exec($ch);
// Check for cURL errors
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
} else {
// Decode JSON response if it is a JSON string
$decodedResponse = json_decode($response, true);
// Check if decoding was successful
if ($decodedResponse !== null) {
// Output the JSON response to the UI
header('Content-Type: application/json');
echo json_encode($decodedResponse, JSON_PRETTY_PRINT);
} else {
// If the response is not valid JSON, echo it as plain text
echo $response;
}
}
// Close cURL session
curl_close($ch);
Navigieren Sie dann in Ihrem Browser zu http://localhost:8000/curl.php
, und wenn die Seite geladen ist, sollten Sie eine Reihe von Produkten im JSON-Format erhalten:
Senden einer GET-Anfrage mit Parametern
Um Parameter in der URL anzugeben, fügen Sie den folgenden Code unter $url = "https://dummyjson.com/products";
ein:
// Query parameters
$params = [
'limit' => 2
];
// Construct the complete URL with query parameters
$url .= '?' . http_build_query($params);
In diesem Code definieren Sie "https://dummyjson.com/products"
als Basis-URL. Dann definieren Sie einen Abfrageparameter mit dem Namen limit
mit einem Wert von 2
in einem assoziativen Array mit dem Namen $params
. Um diesen Parameter in die URL zu integrieren, verwenden Sie die Funktion http_build_query($params)
, die das assoziative Array in eine URL-kodierte Abfragezeichenfolge konvertiert. Die resultierende Abfragezeichenfolge wird mithilfe eines Fragezeichens mit der ursprünglichen URL verkettet, wodurch eine vollständige URL mit dem angegebenen Abfrageparameter erstellt wird. Die resultierende URL sieht folgendermaßen aus: "https://dummyjson.com/products?limit=2"
.
Um dies zu testen, navigieren Sie in Ihrem Browser zu http://localhost:8000/curl.php
und laden Sie die Seite erneut. Sie sollten ein Array mit nur zwei Produkten im JSON-Format erhalten:
Fazit
In diesem Artikel haben Sie gelernt, wie Sie GET-Anfragen mit curl in PHP stellen. Das Verständnis der Grundlagen einer GET-Anfrage bildet die Grundlage für einen optimierten Datenaustausch.
Mithilfe verschiedener curl-Optionen können Entwickler ihre GET-Anfragen anpassen und so eine präzise Kontrolle über Timeouts sicherstellen, Weiterleitungen verwalten und Antworten als Zeichenketten zur weiteren Bearbeitung erhalten. Diese Flexibilität ermöglicht es Entwicklern, ihre Interaktionen mit Webservern zu optimieren und gewährleistet einen effizienten und maßgeschneiderten Datenabruf.
Um mehr über die Verwendung von curl zu erfahren, schauen Sie sich diese Anleitung zur Verwendung von curl mit Python und dieses Tutorial zur Verwendung von curl mit Proxys an.
Keine Kreditkarte erforderlich