PHP封装cURL工具类与应用示例


Posted in PHP onJuly 01, 2019

本文实例讲述了PHP封装cURL工具类。分享给大家供大家参考,具体如下:

CurlUtils工具类:

<?php
/**
 * cURL请求工具类
 */
class CurlUtils {
  private $ch;//curl资源对象
  /**
   * 构造方法
   * @param string $url 请求的地址
   * @param int $responseHeader 是否需要响应头信息
   */
  public function __construct($url,$responseHeader = 0){
    $this->ch = curl_init($url);
    curl_setopt($this->ch,CURLOPT_RETURNTRANSFER,1);//设置以文件流的形式返回
    curl_setopt($this->ch,CURLOPT_HEADER,$responseHeader);//设置响应头信息是否返回
  }
  /**
   * 析构方法
   */
  public function __destruct(){
    $this->close();
  }
  /**
   * 添加请求头
   * @param array $value 请求头
   */
  public function addHeader($value){
    curl_setopt($this->ch, CURLOPT_HTTPHEADER, $value);
  }
  /**
   * 发送请求
   * @return string 返回的数据
   */
  private function exec(){
    return curl_exec($this->ch);
  }
  /**
   * 发送get请求
   * @return string 请求返回的数据
   */
  public function get(){
    return $this->exec();
  }
  /**
   * 发送post请求
   * @param arr/string $value 准备发送post的数据
   * @param boolean $https 是否为https请求
   * @return string    请求返回的数据
   */
  public function post($value,$https=true){
    if($https){
      curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, FALSE);
      curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    }
    curl_setopt($this->ch,CURLOPT_POST,1);//设置post请求
    curl_setopt($this->ch,CURLOPT_POSTFIELDS,$value);
    return $this->exec();
  }
  /**
   * 关闭curl句柄
   */
  private function close(){
    curl_close($this->ch);
  }
}

调用实例:

face++的人脸识别接口

$curl = new CurlUtils("https://api-cn.faceplusplus.com/facepp/v3/detect");//创建curl对象
$value = ['api_key'=>'4Y7GS2sAPGEl-BtQlNw5Iqtq5jGOn87z','api_secret'=>'oQnwwJhS2mcm4vflKvgm972up9sLN8zj','image_url'=>'http://avatar.csdn.net/9/7/5/1_baochao95.jpg','return_attributes'=>'gender,age,glass'];//准备post的值
echo $curl->post($value);//发送请求

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
第十四节--命名空间
Nov 16 PHP
php弹出对话框实现重定向代码
Jan 23 PHP
php内核解析:PHP中的哈希表
Jan 30 PHP
php字符串截取函数用法分析
Nov 25 PHP
php使用cookie保存用户登录的用户名实例
Jan 26 PHP
php使用GD库创建图片缩略图的方法
Jun 10 PHP
php递归函数三种实现方法及如何实现数字累加
Aug 07 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
Sep 20 PHP
PHP实现多图上传(结合uploadify插件)思路分析
Nov 30 PHP
php断点续传之文件分割合并详解
Dec 13 PHP
PHP合并数组函数array_merge用法分析
Feb 17 PHP
php引用传递
Apr 01 PHP
PHP session垃圾回收机制实例分析
Jun 28 #PHP
PHP常用的类封装小结【4个工具类】
Jun 28 #PHP
php实现网页上一页下一页翻页过程详解
Jun 28 #PHP
php输出控制函数和输出函数生成静态页面
Jun 27 #PHP
php生成静态页面并实现预览功能
Jun 27 #PHP
PHP创建对象的六种方式实例总结
Jun 27 #PHP
PHP实现的抓取小说网站内容功能示例
Jun 27 #PHP
You might like
Email+URL的判断和自动转换函数
2006/10/09 PHP
如何跨站抓取别的站点的页面的补充
2006/10/09 PHP
PHP使用数组实现队列
2012/02/05 PHP
php中\r \r\n \t的区别示例介绍
2014/02/08 PHP
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
创建无限极分类树型结构的简单方法
2017/06/20 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
prototype 学习笔记整理
2009/07/17 Javascript
jquery自动完成插件(autocomplete)应用之PHP版
2009/12/15 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
js实现仿Discuz文本框弹出层效果
2015/08/13 Javascript
JS实现支持多选的遍历下拉列表代码
2015/08/20 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
vue2.0数据双向绑定与表单bootstrap+vue组件
2017/02/27 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
微信小程序报错: thirdScriptError的错误问题
2020/06/19 Javascript
[53:23]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
Python转码问题的解决方法
2008/10/07 Python
python ElementTree 基本读操作示例
2009/04/09 Python
打印出python 当前全局变量和入口参数的所有属性
2009/07/01 Python
python通过索引遍历列表的方法
2015/05/04 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
优秀广告词大全
2014/03/19 职场文书
国际金融专业自荐信
2014/07/05 职场文书
消防隐患整改通知书
2015/04/22 职场文书
办公室卫生管理制度
2015/08/04 职场文书
MySQL触发器的使用
2021/05/24 MySQL