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 = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)'; const sURL = 'https://www.baidu.com'; const sCookie = 'fake if you want'; 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 = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)'; const sURL = 'https://www.baidu.com'; const sCookie = 'fake if you want'; 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) == '200') { list($sHeader, $sBody) = explode("\r\n\r\n", $sRet, 2); // } print_r($sHeader); print_r($sBody); // curl_close($curl); } }$foo = new getRequest();$foo->vInitRequest();?>
curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, array('user'=>'test'));
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!