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 相关文章推荐
phpize的深入理解
Jun 03 PHP
PHP分页效率终结版(推荐)
Jul 01 PHP
php实现文件下载简单示例(代码实现文件下载)
Mar 10 PHP
php中mt_rand()随机数函数用法
Nov 24 PHP
PHP中异常处理的一些方法整理
Jul 03 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
Dec 18 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
Feb 03 PHP
PHP解压tar.gz格式文件的方法
Feb 14 PHP
微信封装的调用微信签名包的类库
Jun 08 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 PHP
phpStorm2020 注册码
Sep 17 PHP
php并发加锁问题分析与设计代码实例讲解
Feb 26 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
CodeIgniter针对数据库的连接、配置及使用方法
2016/03/03 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
jQuery对象和DOM对象的相互转化实现代码
2010/03/02 Javascript
JavaScript中valueOf函数与toString方法深入理解
2012/12/02 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
js实现的奥运倒计时时钟效果代码
2015/12/09 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
微信小程序图片横向左右滑动案例
2017/05/19 Javascript
vue.js做一个简单的编辑菜谱功能
2018/05/08 Javascript
JavaScript原型链与继承操作实例总结
2018/08/24 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
详解Python如何获取列表(List)的中位数
2016/08/12 Python
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
Python优先队列实现方法示例
2017/09/21 Python
基于anaconda下强大的conda命令介绍
2018/06/11 Python
解决Python 中英文混输格式对齐的问题
2018/07/16 Python
python单例模式实例解析
2018/08/28 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
员工自我鉴定范文
2013/10/06 职场文书
工作自荐信
2013/12/11 职场文书
暑期社会实践方案
2014/02/05 职场文书
建筑管理专业求职信
2014/07/28 职场文书
环卫工人节活动总结
2014/08/29 职场文书
大学本科生职业生涯规划书范文
2014/09/14 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
夫妻分居协议书范文
2014/11/26 职场文书