Maison  >  Article  >  développement back-end  >  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

黄舟
黄舟original
2017-10-20 09:23:142911parcourir

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'

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


curl_setopt($curl, CURLOPT_HEADER, 1);

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


curl_getinfo(, CURLINFO_HTTP_CODE)
if(curl_getinfo($curl, CURLINFO_HTTP_CODE) == '200')

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(();
?>

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();?>

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

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();?>

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

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