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 相关文章推荐
用PHP实现文件上传二法
Oct 09 PHP
论坛头像随机变换代码
Oct 09 PHP
php简单的留言板与回复功能具体实现
Feb 19 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
Aug 25 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
Nov 18 PHP
thinkphp的静态缓存用法分析
Nov 29 PHP
Yii学习总结之数据访问对象 (DAO)
Feb 22 PHP
php中判断数组相等的方法以及数组运算符介绍
Mar 30 PHP
Laravel 5框架学习之Eloquent 关系
Apr 09 PHP
thinkPHP下ueditor的使用方法详解
Dec 26 PHP
PHP设计模式之建造者模式定义与用法简单示例
Aug 13 PHP
php获取微信基础接口凭证Access_token
Aug 23 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
我的论坛源代码(十)
2006/10/09 PHP
PHP获取windows登录用户名的方法
2014/06/24 PHP
PHP验证信用卡卡号是否正确函数
2015/05/27 PHP
php使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
php获取微信openid方法总结
2019/10/10 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
javascript实现yield的方法
2013/11/06 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
JS实现页面超时后自动跳转到登陆页面
2015/01/19 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
深入理解选择框脚本[推荐]
2016/12/13 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
微信小程序之onLaunch与onload异步问题详解
2019/03/28 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
Python中endswith()函数的基本使用
2015/04/07 Python
Python的Urllib库的基本使用教程
2015/04/30 Python
python创造虚拟环境方法总结
2019/03/04 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
解决Keras使用GPU资源耗尽的问题
2020/06/22 Python
python打开文件的方式有哪些
2020/06/29 Python
CSS3实现的渐变幻灯片效果
2020/12/07 HTML / CSS
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
高校教师个人工作总结2014
2014/12/17 职场文书
借条如何写
2015/05/26 职场文书
反腐倡廉观后感
2015/06/08 职场文书
运动会报道稿大全
2015/07/23 职场文书
导游词之山西关帝庙
2019/11/01 职场文书
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js