Client HTTP en PHP : faire des requêtes correctement de A à Z

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi un client HTTP en PHP ?

Dans le développement web moderne, les applications PHP existent rarement de manière isolée. Presque tous les projets interagissent avec des services externes : systèmes de paiement, API de réseaux sociaux, stockages cloud ou microservices personnalisés. Pour cela, un client HTTP en PHP fiable est nécessaire, permettant d'envoyer des requêtes, de traiter les réponses et de gérer les connexions.

Dans cet article, nous allons examiner toutes les méthodes pour créer un client HTTP en PHP : des fonctions intégrées les plus simples aux bibliothèques professionnelles. Vous apprendrez à gérer correctement les erreurs, à travailler avec les en-têtes et les délais d'attente, et vous obtiendrez des exemples de code prêts à l'emploi.

Ce contenu sera utile aussi bien aux débutants qui commencent tout juste à apprendre PHP qu'aux développeurs expérimentés souhaitant systématiser leurs connaissances.



1. Outils intégrés de PHP pour les requêtes HTTP

PHP fournit plusieurs outils intégrés pour travailler avec HTTP. Examinons les plus populaires.



1.1. file_get_contents() — une méthode simple

La méthode la plus simple pour envoyer une requête GET est d'utiliser la fonction file_get_contents(). Elle lit le contenu d'un fichier ou d'une URL dans une chaîne de caractères.

<?php$url = 'https://api.example.com/data';$response = file_get_contents($url);

if ($response === false) { echo 'Erreur lors de l\'exécution de la requête';} else { echo $response;}?>

Avantages : code minimal, ne nécessite pas d'extensions supplémentaires.

Inconvénients : pas de support des requêtes POST, difficile de gérer les en-têtes, pas de gestion des délais d'attente, peu adapté à la production.



1.2. stream_context_create() — configuration du contexte

Pour un travail plus flexible, utilisez stream_context_create(). Cette méthode permet de définir la méthode de requête, les en-têtes et le corps de la requête.

<?php$data = json_encode(['name' => 'John', 'age' => 30]);

$options = [ 'http' => [ 'method' => 'POST', 'header' => "Content-Type: application/json\\r" . "Content-Length: " . strlen($data) . "\\r", 'content' => $data, 'timeout' => 10 ]];

$context = stream_context_create($options);$response = file_get_contents('https://api.example.com/users', false, $context);

if ($response === false) { echo 'Erreur de requête';} else { $result = json_decode($response, true); print_r($result);}?>

Cette approche est déjà meilleure, mais elle présente encore des limitations en termes de fonctionnalités et de performances.



2. cURL — un client HTTP puissant en PHP

cURL (Client URL Library) est un outil standard pour travailler avec HTTP en PHP. Il offre un contrôle maximal sur les requêtes et est supporté sur pratiquement tous les hébergements.



2.1. Envoi de base d'une requête GET

<?php$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'https://api.example.com/users');curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_TIMEOUT, 30);

$response = curl_exec($ch);$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_error($ch)) { echo 'Erreur cURL : ' . curl_error($ch);} else { echo "Code HTTP : $httpCode"; echo $response;}

curl_close($ch);?>


2.2. Requête POST avec données

<?php$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'https://api.example.com/users');curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['name' => 'Alice', 'email' => 'alice@example.com']));curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_HTTPHEADER, [    'Content-Type: application/x-www-form-urlencoded',    'Authorization: Bearer your_token_here']);

$response = curl_exec($ch);$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);curl_close($c

Blogs

Book Recommendations