HTTP-Client in PHP: Anfragen richtig von A bis Z stellen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Wozu braucht man einen HTTP-Client in PHP?

\n\n

Moderne Webentwicklung ist ohne die Interaktion mit externen Diensten undenkbar. Ob das Senden von Daten an eine fremde API, das Abrufen von Wechselkursen oder die Integration mit einem Zahlungsgateway – jeder PHP-Entwickler steht vor der Notwendigkeit, HTTP-Anfragen durchzuführen. Die Erstellung eines zuverlässigen HTTP-Clients in PHP ist eine grundlegende Kompetenz, die es Ihrer Anwendung ermöglicht, mit der Außenwelt zu kommunizieren.

\n\n

In diesem Artikel werden wir zwei Hauptansätze untersuchen: die Verwendung der integrierten cURL-Erweiterung und der beliebten Bibliothek Guzzle. Sie erfahren, wie Sie GET-, POST-, PUT- und DELETE-Anfragen korrekt senden, Fehler behandeln und mit Headern arbeiten. Das Material ist sowohl für Anfänger als auch für erfahrene Entwickler nützlich, die ihr Wissen systematisieren möchten.

\n\n

1. Grundlagen des HTTP-Clients in PHP: Arbeiten mit cURL

\n\n

1.1. Was ist cURL und warum ist es wichtig

\n\n

cURL (Client URL Library) ist eine leistungsstarke PHP-Erweiterung, die die Interaktion mit verschiedenen Servern über die Protokolle HTTP, HTTPS, FTP und andere ermöglicht. Es ist in der Standard-PHP-Installation enthalten, erfordert aber manchmal eine separate Aktivierung in der php.ini. cURL bietet vollständige Kontrolle über die Anfrage: Sie können jede Methode, Header, den Anfragetext und Timeouts festlegen.

\n\n

1.2. Einfache GET-Anfrage mit cURL

\n\n

Beginnen wir mit dem häufigsten Szenario – dem Abrufen von Daten von einem Server. Betrachten wir ein Beispiel für eine Anfrage an die öffentliche API JSONPlaceholder:

\n\n
<?php\n// Initialisierung einer cURL-Sitzung\n$ch = curl_init('https://jsonplaceholder.typicode.com/posts/1');\n\n// Konfiguration der Optionen\ncurl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\ncurl_setopt($ch, CURLOPT_HTTPGET, true);\ncurl_setopt($ch, CURLOPT_TIMEOUT, 30);\n\n// Ausführung der Anfrage\n$response = curl_exec($ch);\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n\n// Prüfung auf Fehler\nif (curl_errno($ch)) {\n    echo 'cURL-Fehler: ' . curl_error($ch);\n} else {\n    echo "HTTP-Code: $httpCode\\n";\n    $data = json_decode($response, true);\n    print_r($data);\n}\n\n// Schließen der Sitzung\ncurl_close($ch);\n?>
\n\n

Beachten Sie: Wir überprüfen immer den Antwortcode und das Vorhandensein von Fehlern. CURLOPT_RETURNTRANSFER stellt sicher, dass das Ergebnis in einer Variable zurückgegeben und nicht direkt ausgegeben wird.

\n\n

1.3. Senden einer POST-Anfrage mit Daten

\n\n

Zum Senden von Daten an den Server (z. B. beim Erstellen eines neuen Eintrags) verwenden wir POST. Die Daten können als Array oder JSON-String übergeben werden:

\n\n
<?php\n$ch = curl_init('https://jsonplaceholder.typicode.com/posts');\n\n$postData = [\n    'title' => 'Neuer Beitrag',\n    'body' => 'Inhalt des Beitrags',\n    'userId' => 1\n];\n\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_POST => true,\n    CURLOPT_POSTFIELDS => json_encode($postData), // JSON\n    CURLOPT_HTTPHEADER => [\n        'Content-Type: application/json',\n        'Accept: application/json'\n    ],\n    CURLOPT_TIMEOUT => 30\n]);\n\n$response = curl_exec($ch);\n$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\n\necho "HTTP-Code: $httpCode\\n";\necho $response;\n?>
\n\n

Wichtiger Punkt: Wenn Sie ein Array in CURLOPT_POSTFIELDS übergeben, codiert PHP es automatisch als application/x-www-form-urlencoded. Für JSON müssen Sie json_encode() verwenden und den Header Content-Type explizit angeben.

\n\n

1.4. PUT- und DELETE-Anfragen

\n\n

Zum Aktualisieren und Löschen von Ressourcen werden die Methoden PUT und DELETE verwendet. In cURL werden sie über die Option CURLOPT_CUSTOMREQUEST festgelegt:

\n\n
<?php\n// PUT-Anfrage (Aktualisierung)\n$ch = curl_init('https://jsonplaceholder.typicode.com/posts/1');\n$updateData = ['title' => 'Aktualisierter Titel'];\n\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'PUT',\n    CURLOPT_POSTFIELDS => json_encode($updateData),\n    CURLOPT_HTTPHEADER =>                

Blogs

Buchempfehlungen