En développement web, l'envoi de requêtes HTTP est une tâche très importante. Que vous obteniez des données via une API ou que vous communiquiez avec un service tiers, vous devez utiliser des requêtes HTTP pour le transfert de données. En PHP, vous pouvez utiliser la bibliothèque curl pour envoyer des requêtes HTTP. Cet article présentera en détail l'utilisation de la bibliothèque curl.
1. Introduction à la bibliothèque curl
La bibliothèque curl est une bibliothèque de transfert de fichiers et prend en charge plusieurs protocoles. En plus de prendre en charge les protocoles courants tels que HTTP, HTTPS et FTP, il prend également en charge les protocoles de messagerie tels que SMTP et POP3, ainsi que les protocoles de transfert de fichiers tels que SCP et SFTP. La bibliothèque curl est un outil très puissant qui peut nous aider à développer rapidement des clients HTTP pour réaliser une interaction de données avec des services tiers.
2. Utilisation de base de la bibliothèque curl
La bibliothèque curl fournit de nombreuses fonctions. Nous ne présentons ici que quelques fonctions couramment utilisées.
Envoyer une requête GET à l'aide de la bibliothèque curl est très simple Il vous suffit d'appeler curl_init() pour créer un. ressource curl, puis définissez l'URL et d'autres paramètres sont suffisants. Voici un exemple :
$url = 'http://example.com/api/getdata'; $curl = curl_init($url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl);
Le code ci-dessus utilise la fonction curl_init() pour créer une ressource curl et définir l'URL demandée. Ensuite, la fonction curl_setopt() est utilisée pour définir le paramètre CURLOPT_RETURNTRANSFER, qui indique que la réponse HTTP est sortie directement vers une variable au lieu d'être affichée à l'écran. Enfin, la fonction curl_exec() est appelée et le résultat est stocké. Après exécution, curl_close() est utilisée pour fermer la ressource curl.
En plus des requêtes GET, il est également très simple d'utiliser la bibliothèque curl pour envoyer des requêtes POST. Définissez simplement le paramètre CURLOPT_POST sur 1 lors de l'appel de la fonction curl_setopt() et utilisez curl_setopt() pour définir CURLOPT_POSTFIELDS afin de définir les données POST.
Voici un exemple :
$url = 'http://example.com/api/postdata'; $data = array( 'name' => 'John', 'email' => 'john@example.com', 'message' => 'Hello World!' ); $curl = curl_init($url); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl);
Le code ci-dessus utilise la fonction http_build_query() pour convertir les données POST en données codées en URL et définit les paramètres CURLOPT_POST et CURLOPT_POSTFIELDS.
Dans les applications réelles, nous avons parfois besoin d'envoyer des données au format JSON au serveur Vous pouvez également utiliser le curl. bibliothèque Facile à mettre en œuvre. Définissez simplement le paramètre CURLOPT_HTTPHEADER pour spécifier les informations d'en-tête de la demande et envoyer les données JSON comme corps de la demande.
Ce qui suit est un exemple :
$url = 'http://example.com/api/sendjson'; $data = array( 'name' => 'John', 'email' => 'john@example.com', 'message' => 'Hello World!' ); $json = json_encode($data); $curl = curl_init($url); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($curl, CURLOPT_POSTFIELDS, $json); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($json)) ); $result = curl_exec($curl); curl_close($curl);
Le code ci-dessus appelle la fonction json_encode() pour convertir le tableau associatif en données au format JSON et définit Content-Type et Content- Longueur et autres informations d’en-tête de demande.
3. Utilisation avancée de la bibliothèque curl
La bibliothèque curl fournit non seulement des fonctions de base pour l'envoi de requêtes HTTP, mais fournit également de nombreuses fonctions avancées qui peuvent nous aider à mieux contrôler la requête processus. . Voici quelques fonctions avancées couramment utilisées.
Parfois, nous devons accéder aux ressources réseau via un serveur proxy. Les serveurs proxy peuvent également être facilement configurés à l'aide de la bibliothèque curl. Définissez simplement le paramètre CURLOPT_PROXY.
Ce qui suit est un exemple :
$url = 'http://example.com/api/getdata'; $curl = curl_init($url); curl_setopt($curl, CURLOPT_PROXY, 'http://proxy.example.com:8080'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl);
Le code ci-dessus appelle la fonction curl_setopt() pour définir le paramètre CURLOPT_PROXY et spécifie l'adresse et le port du serveur proxy.
Parfois, les requêtes réseau peuvent entraîner une exécution trop longue du programme en raison de retards du réseau ou de temps de réponse longs du serveur. Pour éviter cela, nous pouvons définir un délai d'attente. Le délai d'attente peut être facilement défini à l'aide de la bibliothèque curl, il suffit de définir les paramètres CURLOPT_CONNECTTIMEOUT et CURLOPT_TIMEOUT.
Ce qui suit est un exemple :
$url = 'http://example.com/api/getdata'; $curl = curl_init($url); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($curl, CURLOPT_TIMEOUT, 30); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl);
Le code ci-dessus définit les paramètres CURLOPT_CONNECTTIMEOUT et CURLOPT_TIMEOUT, qui représentent respectivement le délai d'expiration de la connexion et le délai d'expiration de la demande.
Lors de la communication avec un serveur du protocole HTTPS, nous devons authentifier le serveur, sinon la communication ne sera pas établi. La vérification SSL peut être très pratique en utilisant la bibliothèque curl. Il vous suffit de définir les paramètres CURLOPT_SSL_VERIFYPEER et CURLOPT_SSL_VERIFYHOST.
Ce qui suit est un exemple :
$url = 'https://example.com/api/getdata'; $curl = curl_init($url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl);
Le code ci-dessus définit les paramètres CURLOPT_SSL_VERIFYPEER et CURLOPT_SSL_VERIFYHOST, qui indiquent respectivement s'il faut authentifier le serveur et vérifier si le nom d'hôte correspond au certificat .
4. Résumé
Cet article présente l'utilisation de base et avancée de l'utilisation de la bibliothèque curl pour envoyer des requêtes HTTP en PHP, y compris l'envoi de requêtes GET, de requêtes POST, de données JSON, et configurer des proxys, définir un délai d'attente et définir la vérification SSL, etc. L'utilisation de la bibliothèque curl peut nous aider à implémenter le client HTTP plus facilement, réalisant ainsi la fonction d'interaction des données avec des services tiers.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!