摘要:的功能提供了很多函数,需要将这些函数按特定的步骤组合到一起,我们先来了解下建立请求的基本步骤。代码如下我们可以通设置函数的不同参数,可以获得不同的结果,这也是扩展的强大之处。函数的常用参数选项具体可查阅官方文档,此处就不列举。
PHP的curl功能提供了很多函数,需要将这些函数按特定的步骤组合到一起,我们先来了解下PHP建立curl请求的基本步骤。
$ch = curl_init(); // 创建一个新的CURL资源赋给变量$ch
curl_setopt($ch, CURLOPT_URL, $url); // 设置URL
$response = curl_exec($ch); // 执行,获取URL并输出到浏览器
curl_close($ch); // 释放资源
如果我们希望获取内容但不输出,可以使用 CURLOPT_RETURNTRANSFER 参数,并设置其值为非0或者true值。代码如下:curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
我们可以通设置函数curl_setopt()的不同参数,可以获得不同的结果,这也是CURL扩展的强大之处。curl_setopt()函数的常用参数选项具体可查阅官方文档,此处就不列举。
下面是我常用的curl get和post请求的方法:
get请求:
public function httpGet(string $url = "") { // 记录请求信息的日志 // todo try { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 60); //https 请求 if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); } $response = curl_exec($ch); $errorCode = curl_errno($ch); curl_close($ch); if (!empty($errorCode)) { // 可记录错误码日志 return null; } // 记录返回结果日志 return $response; } catch (Exception $e) { $errorLog = [ "msg" => $e->getMessage(), "trace" => $e->getTraceAsString(), "data" => [ "url" => $url, ] ]; // 记录错误日志 return null; } }
POST请求:
public function httpPost(string $url = "", array $data = []) { // 记录请求信息的日志 // todo try { $jsonData = json_encode($data); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonData); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_TIMEOUT, 60); curl_setopt($curl, CURLOPT_HTTPHEADER, [ "Content-Type: application/json; charset=utf-8", "Content-Length:" . strlen($jsonData) ]); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //https 请求 if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) == "https") { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } $result = curl_exec($curl); $errorCode = curl_errno($curl); curl_close($curl); if (!empty($errorCode)) { // 可记录错误码日志 return null; } // 记录返回结果日志 return json_decode($result, true); } catch (Exception $e) { $errorData = [ "msg" => $e->getMessage(), "trace" => $e->getTraceAsString(), "data" => [ "url" => $url, "postData" => $data ] ]; // 记录错误日志 return null; } }
欢迎各位朋友进行交流。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/29899.html
摘要:今天跑脚本遇到一个奇怪的问题,就是请求到后期会出现程序阻塞卡死,无异常无响应,一直挂起,脚本也不会自动结束。设置允许执行的最长秒数。增加执行超时后的请求设置函数。从错误类型中,看到确实是有一些请求在秒内未能执行完毕。 今天跑脚本遇到一个奇怪的问题,就是cURL请求到后期会出现程序阻塞卡死,无异常无响应,一直挂起,脚本也不会自动结束。跟对方沟通后说,哥们儿,是不是你们的程序有问题啊,这边...
QueryList 简介 QueryList是一套简洁、优雅、可扩展的PHP采集工具(爬虫),基于phpQuery。 特性 拥有与jQuery完全相同的CSS3 DOM选择器 拥有与jQuery完全相同的DOM操作API 拥有通用的列表采集方案 拥有强大的HTTP请求套件,轻松实现如:模拟登陆、伪造浏览器、HTTP代理等意复杂的网络请求 拥有乱码解决方案 拥有强大的内容过滤功能,可使用jQue...
摘要:目前支持和协议。除此以外,还能在可能的字符编码之间相互进行编码转换。如果启用了这个功能,输入字符编码可能将自动转换成。这些可能在未来增加。 前言 PHP7即将在12月3日正式发布,而RC8是已经差不多稳定了的版本,后续的GA版本主要都是在修复bug,所以为了未来开发环境的升级,准备尝试安装一下。 PHP7.0.0将在12月3日正式发布,但是12月2日时github已经发布出PHP-7...
阅读 1940·2021-09-30 09:53
阅读 1774·2021-09-24 09:48
阅读 1721·2019-08-30 14:01
阅读 2138·2019-08-29 18:35
阅读 1222·2019-08-26 18:27
阅读 2933·2019-08-26 12:12
阅读 914·2019-08-23 17:16
阅读 877·2019-08-23 15:31