浅谈PHP封装CURL


Posted in PHP onMarch 06, 2019

CURL是一个非常强大的开源库,支持很多协议,包括HTTP、FTP、TELNET等,我们使用它来发送HTTP请求。它给我 们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS。CURL可以根据URL前缀是“HTTP” 还是“HTTPS”自动选择是否加密发送内容。

使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤:
1.初始化连接句柄;
2.设置CURL选项;
3.执行并获取结果;
4.释放VURL连接句柄。

PHP.ini扩展开启

浅谈PHP封装CURL

//使用curl发送请求 第一个参数发送的url地址,第二个参数是否发送post请求,默认是发送get请求,第三个就是请求的参数,第四个参数是否发送https
 function curl_request($url, $post=false, $param=[], $https = false)
 {
 //curl_init 初始化的时候传递url
 $ch = curl_init($url);
 //curl_setopt 设置一些请求选项,当然get是默认的也是最好处理的
 if($post){
  //设置请求方式和请求参数,post请求,要设置的类型就是bool型的,那么我们肯定是启用的设置为true,POSTFILEDS是传递的参数,它的第三个参数就是传递的参数可以为一个数组类型的也就是我们的param
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
 }
 // https请求,默认会进行验证 
 if($https){
  //禁止从服务器端 验证客户端的证书,注意7.10开始默认为开启验证的!!!
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 }
 //curl_exec 执行请求会话(发送请求)
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 $res = curl_exec($ch);
 //curl_close 关闭请求会话
 curl_close($ch);
 return $res;
 }

官网说明:

1、CURLOPT_POST
TRUE 时会发送 POST 请求,类型为:application/x-www-form-urlencoded,是 HTML 表单提交时最常见的一种。

2、CURLOPT_POSTFIELDS
操作来发送。要发送文件,在文件名前面加上@前缀并使用完整路径。文件类型可在文件名后以 ';type=mimetype' 的格式指定。这个参数可以是 urlencoded 后的字符串,类似'para1=val1¶2=val2&...',也可以使用一个以字段名为键值,字段数据为值的数组。如果value是一个数组,Content-Type头将会被设置成multipart/form-data。  从 PHP 5.2.0 开始,使用 @ 前缀传递文件时,value 必须是个数组。  从 PHP 5.5.0 开始, @ 前缀已被废弃,文件可通过 CURLFile 发送。设置 CURLOPT_SAFE_UPLOAD 为 TRUE 可禁用 @ 前缀发送文件,以增加安全性。 

3、CURLOPT_SSL_VERIFYPEER
FALSE 禁止 cURL 验证对等证书(peer'scertificate)。要验证的交换证书可以在 CURLOPT_CAINFO 选项中设置,或在 CURLOPT_CAPATH中设置证书目录

以上所述是小编给大家介绍的PHP如何封装CURL详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
APMServ使用说明
Oct 23 PHP
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
Sep 11 PHP
zf框架的registry(注册表)使用示例
Mar 13 PHP
PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子
May 10 PHP
CI(CodeIgniter)框架中的增删改查操作
Jun 10 PHP
Linux下安装oracle客户端并配置php5.3
Oct 12 PHP
常见php数据文件缓存类汇总
Dec 05 PHP
浅谈php7的重大新特性
Oct 23 PHP
PHP中使用foreach()遍历二维数组的简单实例
Jun 13 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
laravel 5.3中自定义加密服务的方案详解
May 09 PHP
PHP代码覆盖率统计详解
Jul 22 PHP
Yaf框架封装的MySQL数据库操作示例
Mar 06 #PHP
PHP实现的敏感词过滤方法示例
Mar 06 #PHP
详解PHP 二维数组排序保持键名不变
Mar 06 #PHP
PHP获取ttf格式文件字体名的方法示例
Mar 06 #PHP
php ajax confirm 删除实例详解
Mar 06 #PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
Mar 06 #PHP
一次因composer错误使用引发的问题与解决
Mar 06 #PHP
You might like
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
2014/12/16 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
2017/09/30 PHP
php和C#的yield迭代器实现方法对比分析
2019/07/17 PHP
js判断输入是否为数字的具体实例
2013/08/03 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
2017/01/16 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
设置cookie指定时间失效(实例代码)
2017/05/28 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
node.js基础知识小结
2018/02/26 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
朴素贝叶斯Python实例及解析
2018/11/19 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
pip安装python库的方法总结
2019/08/02 Python
Python进度条的制作代码实例
2019/08/31 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
基于html5 DeviceOrientation 实现微信摇一摇功能
2015/09/25 HTML / CSS
南京某公司笔试题
2013/01/27 面试题
房产转让协议书
2014/04/11 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
竞选学习委员演讲稿
2014/04/28 职场文书
六查六看六改心得体会
2014/10/14 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android