Maison >développement back-end >tutoriel php >Comment utiliser curl pour envoyer des requêtes en PHP

Comment utiliser curl pour envoyer des requêtes en PHP

墨辰丷
墨辰丷original
2018-05-25 16:59:541722parcourir

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'envoi HTTP à l'aide de CURL

// 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);

Quatre fonctions sont utilisées dans le code ci-dessus


  • curl_init() et curl_close() servent respectivement à initialiser et fermer la connexion CURL, qui sont toutes deux relativement simples.

  • 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 ; si une erreur se produit, la fonction renvoie ; 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.net/manual/en/function.curl-setopt.php) pour afficher une liste de toutes les options prises en charge par. BOUCLE.

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 Pour obtenir la sortie pertinente des informations de la 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 le temps consommé par la transmission totale. 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 , nous définissons également que CURL_POST est vrai, 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’étude de chacun.


Recommandations associées :

php implémente la méthode d'utilisation de curl pour simuler l'IP et la source d'accès

PHP implémente curl ou file_get_contents pour obtenir la page qui nécessite une autorisation

php utilise curlMéthodes pour implémenter la fonction de soumission de formulaire simulé

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!

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