Maison  >  Article  >  développement back-end  >  Utiliser curl pour envoyer des requêtes (requêtes GET et requêtes POST) en PHP

Utiliser curl pour envoyer des requêtes (requêtes GET et requêtes POST) en PHP

高洛峰
高洛峰original
2017-03-22 10:20:332061parcourir

Cet article présente principalement l'utilisation de curl pour envoyer des requêtes (requêtes GET et requêtes POST) en PHP. L'éditeur pense que c'est plutôt bien, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur et jetons un coup d'œil

Le processus de base d'envoi d'une requête à l'aide de CURL

L'utilisation de l'extension PHP de CURL pour finaliser l'envoi d'une requête HTTP comporte généralement les étapes suivantes :

1. Initialisez la poignée de connexion ;

2. Définissez les options CURL ;

3. 🎜>

4. Relâchez le handle de connexion VURL.

Le fragment de programme suivant est un processus typique d'utilisation de CURL pour envoyer du HTTP


// 1. 初始化
 $ch = curl_init();
 // 2. 设置选项,包括URL
 curl_setopt($ch,CURLOPT_URL,"http://www.devdo.net");
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch,CURLOPT_HEADER,0);
 // 3. 执行并获取HTML文档内容
 $output = curl_exec($ch);
 if($output === FALSE ){
 echo "CURL Error:".curl_error($ch);
 }
 // 4. 释放curl句柄
 curl_close($ch);


Utilisé dans le code ci-dessus Les quatre fonctions


  • curl_init() et curl_close() servent respectivement à initialiser et fermer la connexion CURL, ce qui est relativement simple.

  • curl_exec() exécute une requête CURL. Si aucune erreur ne se produit, la fonction renvoie les données renvoyées par l'URL correspondante, indiquant la satisfaction sous forme de chaîne ; FAUX. Il convient de noter que le signe égal est utilisé pour déterminer si la sortie est FALSE. Ceci permet de faire la distinction entre le retour d'une chaîne vide et une erreur.

  • La fonction la plus importante de la bibliothèque de fonctions CURL est curl_setopt(), qui peut personnaliser les requêtes HTTP en définissant les options définies par la bibliothèque de fonctions CURL. Trois options importantes sont utilisées dans l'extrait de code ci-dessus :

①CURLOPT_URL spécifie l'URL demandée


②CURLOPT_RETURNTRANSFER est défini sur 1 pour indiquer que la fonction curl_exec doit être exécuté plus tard. Le retour est la chaîne de retour de l'URL, au lieu de diriger la chaîne de retour vers la sortie standard et de renvoyer TRUE


③CURLLOPT_HEADER est défini sur 0 pour indiquer qu'aucune information d'en-tête HTTP n'est renvoyée ; .

CURL propose de nombreuses options. Vous pouvez accéder au site officiel de PHP (http://www.php.cn/) pour afficher une liste de toutes les options prises en charge par CURL.

Obtenir les informations de sortie de la requête CURL

Une fois la fonction curl_exec() exécutée, vous pouvez utiliser la fonction curl_getinfo() pour obtenez les informations de sortie des informations de requête CURL, l'exemple de code est le suivant :


curl_exec($ch);
$info = curl_getinfo($sh);
echo ' 获取 '.$info['url'].'耗时'.$info['total_time'].'秒';


Dans le code ci-dessus, curl_getinfo renvoie un tableau associatif, contenant les données suivantes :

  • url : adresse réseau.

  • content_type : encodage du contenu.

  • http_code : code d'état HTTP.

  • header_size : La taille de l'en-tête.

  • request_size : La taille de la requête.

  • filetime : l'heure à laquelle le fichier a été créé.

  • ssl_verify_result : résultat de la vérification SSL.

  • redirect_count : nombre de sauts.

  • total_time : temps total pris.

  • namelookup_time : heure de la requête DNS.

  • connect_time : Temps passé à attendre la connexion.

  • pretransfer_time : Temps de préparation du pré-transfert.

  • size_uplpad : La taille des données téléchargées.

  • size_download : La taille des données téléchargées.

  • speed_download : Vitesse de téléchargement.

  • speed_upload : vitesse de téléchargement.

  • download_content_length : La longueur du contenu téléchargé.

  • upload_content_length : La longueur du contenu téléchargé.

  • starttransfer_time : Horaires de début du transfert.

  • redirect_time : heure de redirection.

La fonction curl_getinfo() a également un paramètre facultatif $opt, grâce auquel vous pouvez définir des constantes, correspondant au champ ci-dessus. Si le deuxième paramètre est défini, renvoyez uniquement le. informations spécifiées. Par exemple, si $opt est défini sur CURLINFO_TOTAL_TIME, la fonction curl_getinfo() ne renverra que total_time, qui est la durée totale de transmission. Lorsque vous n'avez besoin de prêter attention qu'à certaines informations de transmission, la définition du paramètre $opt est significative.

Utilisez CURL pour envoyer une requête GET

Comment utiliser CURL pour envoyer une requête GET La clé pour envoyer une requête GET est de. assemblez une URL au format correct. L'adresse de la requête et les données GET sont séparées par un "?", puis le nom et la valeur de la variable GET sont séparés par "=", et chaque nom et valeur GET sont connectés par "&". PHP nous fournit une fonction spécifiquement utilisée pour assembler la requête GET et les parties de données - http_build_query. Cette fonction accepte un tableau associatif et renvoie la chaîne de requête GET décrite par les données associées. En utilisant cette fonction, combinée au processus général d'envoi de requêtes HTTP CURL, nous avons fermé une fonction qui envoie des requêtes GET - doCurlGetRequest. Le code spécifique est le suivant :


/**
 *@desc 封闭curl的调用接口,get的请求方式。
*/
function doCurlGetRequest($url,$data,$timeout = 5){
 if($curl == "" || $timeout <= 0){
 return false;
 }
 $url = $url.&#39;?&#39;.http_bulid_query($data);
 $con = curl_init((string)$url);
 curl_setopt($con, CURLOPT_HEADER, false);
 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
 
 return curl_exec($con);
}


Cette fonction transmet l'URL avec les paramètres GET assemblés à l'aide de http_build_query à la fonction curl_init, puis utilise CURL pour envoyer une requête HTTP.

Utilisez CURL pour envoyer une requête POST Vous pouvez utiliser l'option CURLOPT_POSTFIELDS fournie par CURL Définissez cette option sur les données de chaîne POST à ​​mettre. la demande dans le texte. De même, nous avons implémenté une fonction pour envoyer une requête POST - doCurlPostRequest, le code est le suivant :


/**
** @desc 封装 curl 的调用接口,post的请求方式
**/
function doCurlPostRequest($url,$requestString,$timeout = 5){
 if($url == &#39;&#39; || $requestString == &#39;&#39; || $timeout <=0){
 return false;
 }
 $con = curl_init((string)$url);
 curl_setopt($con, CURLOPT_HEADER, false);
 curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
 curl_setopt($con, CURLOPT_POST,true);
 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($con, CURLOPT_TIMEOUT,(int)$timeout);
 return curl_exec($con); 
}


En plus de définir CURLOPT_POSTFIELDS dans le code ci-dessus. De plus, nous définissons également CURL_POST sur true, indiquant que cette requête est une requête POST. Les données GET peuvent également être transmises dans les requêtes POST. Il vous suffit d'assembler les données de la requête GET dans l'URL.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun. J'espère également que tout le monde soutiendra le site Web PHP chinois.

Pour plus d'articles sur l'utilisation de curl pour envoyer des requêtes (requêtes GET et requêtes POST) en PHP, veuillez faire attention au site Web PHP chinois !

Articles associés :

Le problème du paramètre url lorsque PHP utilise curl pour lancer une requête get

Remarque sur PHP utilisant la fonction curl pour envoyer une demande de publication Explication détaillée des exemples d'événements

Compétences en développement PHP (8) - Détails du code de demande CURL

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn