Maison > développement back-end > tutoriel php > PHP curl obtient le partage d'un exemple d'utilisation de demande de publication

PHP curl obtient le partage d'un exemple d'utilisation de demande de publication

黄舟
Libérer: 2023-03-16 17:52:02
original
3042 Les gens l'ont consulté

1. Résumé de CURL

Personnellement, je résume la requête curl en trois étapes

1. Créer une poignée curl (curl_init) et définir les paramètres (curl_setopt) (ouvrir le réfrigérateur )

2. Exécuter la requête (curl_exec), traiter les données renvoyées (mettre l'éléphant dedans)

3. Fermer curl (curl_close), libérer toutes les ressources (fermer le réfrigérateur)

En fait, si le code semble compliqué, la complexité peut résider dans la logique de traitement des données renvoyées.

2. CURL_SETOPT

Comme son nom l'indique, SetOption définit des paramètres, qui incluent de nombreux paramètres. Voici juste une simple extraction de quelques paramètres couramment utilisés. ensemble commun UA, Cookie, https, etc.


bool curl_setopt          (   , int  ,  "User-Agent: ""Referer: " 禁止 cURL 验证对等证书(peer'
Copier après la connexion

Si vous devez renvoyer l'en-tête, ajoutez-le vous-même


curl_setopt($curl, CURLOPT_HEADER, 1);
Copier après la connexion

Déterminez le code d'état renvoyé :


curl_getinfo(, CURLINFO_HTTP_CODE)
if(curl_getinfo($curl, CURLINFO_HTTP_CODE) == '200')
Copier après la connexion

La version simple de la requête GET est la suivante. En prenant la requête à Baidu comme exemple. , seuls les attributs les plus élémentaires sont définis :


 =, CURLOPT_URL, 'http://www.baidu.com', CURLOPT_HEADER, 1, CURLOPT_RETURNTRANSFER, 1 = curl_exec(();
?>
Copier après la connexion

Il est légèrement compliqué de configurer l'UA, les cookies, etc. Seule la vérification du certificat SSL est nécessaire dans les requêtes https, mais pas dans les requêtes http. Si vous avez besoin de le demander, adresse régulière, similaire à https://example.com/?id=$i, modifiez simplement la boucle for.


<?php
class getRequest
{    
const sUA = &#39;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)&#39;;    
const sURL = &#39;https://www.baidu.com&#39;;    
const sCookie = &#39;fake if you want&#39;;    
function vInitRequest()
    {        $curl = curl_init();

        curl_setopt($curl, CURLOPT_HEADER, self::sUA);
        curl_setopt($curl, CURLOPT_COOKIE, self::sCookie);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);        
        /*
         * ssl check,use for https url         
         */
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);//        
        for ($iId = 1; $iId < 1000; $iId++) {
//            $sURL = self::sURL.$iId;
        curl_setopt($curl, CURLOPT_URL, self::sURL);        
        $this->sExecRequest($curl);//        }    }    function sExecRequest($curl)
    {        $sRet = curl_exec($curl);        print_r($sRet);        /**
         * handle your response
         * stripos or preg         */
        curl_close($curl);
    }
}$foo = new getRequest();$foo->vInitRequest();?>
Copier après la connexion

3. Séparez l'en-tête et le corps dans la réponse

Tout d'abord, pour afficher les informations d'en-tête, vous devez le configurer comme suit. L'en-tête et le corps peuvent être obtenus. Bien sûr, il existe d'autres méthodes similaires


curl_setopt($curl, CURLOPT_HEADER, 1);list($sHeader, $sBody) = explode("\r\n\r\n", $sRet, 2);
Copier après la connexion

Code complet : <🎜. >


<?php
class getRequest
{    
const sUA = &#39;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)&#39;;    
const sURL = &#39;https://www.baidu.com&#39;;    
const sCookie = &#39;fake if you want&#39;;    
function vInitRequest()
    {        
    $curl = curl_init();        
    $i = 0;
        curl_setopt($curl, CURLOPT_HEADER, self::sUA);
        curl_setopt($curl, CURLOPT_COOKIE, self::sCookie);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_HEADER, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);
        curl_setopt($curl, CURLOPT_URL, self::sURL);        
        $this->sExecRequest($curl);
    }    function sExecRequest($curl)
    {        $sRet = curl_exec($curl);        
    // if (curl_getinfo($curl, CURLINFO_HTTP_CODE) == &#39;200&#39;) {
            list($sHeader, $sBody) = explode("\r\n\r\n", $sRet, 2);        
            // }
            print_r($sHeader);            
            print_r($sBody);        
            // curl_close($curl);    }
}$foo = new getRequest();$foo->vInitRequest();?>
Copier après la connexion

4. Requête POST

La requête POST définit simplement deux paramètres de plus que la requête Get ci-dessus.

1. Hé, je vais utiliser POST pour soumettre des données.

2. Le contenu des données que je POST


curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, array(&#39;user&#39;=>&#39;test&#39;));
Copier après la connexion
La version simple est la suivante :


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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal