Cet article présente les solutions aux problèmes que j'ai rencontrés lors de l'utilisation de curl. J'espère que cela aide tout le monde. Tout d'abord, regardons une fonction curl encapsulée
function request_post($url = '', $param = '') { if (empty($url) || empty($param)) { return false; } $postUrl = $url; $curlPost = $param; $curl = curl_init();//初始化curl curl_setopt($curl, CURLOPT_URL,$postUrl);//抓取指定网页 curl_setopt($curl, CURLOPT_HEADER, 0);//设置header curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 curl_setopt($curl, CURLOPT_POST, 1);//post提交方式 curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);//提交的参数 $data = curl_exec($curl);//运行curl curl_close($curl); return $data; }
Lorsqu'elle est appelée, le résultat renvoyé est bool (false)
Nous obtenons l'erreur via curl_error($curl) devant le. Fonction curl_exec, qui est également string(0 ) "" Chaîne vide.
Enfin, j'ai trouvé que l'adresse d'interface de l'API que j'ai appelée était le protocole SSL, puis j'ai juste ajouté les deux suivants
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
Si l'adresse demandée par curl contient des espaces, false sera renvoyé Oui, vous devez y prêter une attention particulière.
J'ai également rencontré un retour false print curl_error($curl) auparavant et j'ai obtenu l'erreur suivante
string(39) "Problem (2) in the Chunked-Encoded data" bool(false)
La solution à cette erreur est de définir la version du protocole HTTP utilisée par curl, qui est d'ajouter La phrase suivante
//CURL_HTTP_VERSION_1_0 (强制使用 HTTP/1.0) //CURL_HTTP_VERSION_1_1 (强制使用 HTTP/1.1)。 curl_setopt($curlp, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
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!