PHP封装cURL工具类与应用示例
作者:webbc 发布时间:2023-10-18 11:57:36
标签:PHP,cURL,工具类
本文实例讲述了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程序设计有所帮助。
来源:https://blog.csdn.net/baochao95/article/details/55105748
0
投稿
猜你喜欢
- 南京的炎炎夏日也未能挡住书友会朋友们的参与,下午两点半我们正式开始了这个月的话题:“浏览器”。一开始大家大致上说了一些自己认为各浏览器中各自
- 大部分语言,例如c语言,交换两个变量的值需要使用中间变量。例如交换a,b伪代码:tmp = aa = bb = tmppython里面可以实
- 下列语句部分是Mssql语句,不可以在access中使用。SQL语句分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECL
- 1.引言创建命令行程序很棒:命令行可以按照我们的设定完成相应的工作,相比GUI界面程序,无需花费数小时尝试使 GUI 正常工作。但有时最好有
- 前一段时间,一个流行的东方系列mv 《bad apple》 带来一股奇怪的风潮: 各种技术狂人纷纷把这段mv在一些匪夷
- 本文实例讲述了JavaScript设计模式之模板方法模式原理与用法。分享给大家供大家参考,具体如下:一、模板方法模式:一种只需使用继承就可以
- 首先 跳过权限表模式启动MySQL:mysqld --skip-grant-tables &从现在开始,你将踏入第一个坑
- 写在前面大家好,我是第一次python学了一个学期,期末要完成一个毕业生信息管理系统大作业的小韩了,由于上次没有仔细看开发实现的要求,实现了
- switch是很容易理解的,先来个代码,运行起来看看你的操作系统是什么吧package main import (  
- 该语言中缩进是其精髓,通过缩进可以表示函数、循环等程序结构的范围。有时写完程序后,发现所有程序需要放入函数def中,这时就需要对一整块程序同
- VueConf ,尤大说, Vue 支持 Ts 了,网上关于 Vue + Ts 的资料有点少, 楼主踩了一个星期坑,终于摸明白了 修饰器 的
- <% '****************************** '函数:Chec
- 引言在 Golang 中,将 URL 打包用于从服务器获取数据非常重要。只需了解您是否正在处理任何应用程序并且您想从任何外部位置或服务器获取
- 计时器和延时器的概念 //--计时器 // 计时器ID号 setInterval(回调函数, 毫秒数); // 每隔指定毫秒数,调用一次回调
- python中的turtle库是3.6版本中新推出的绘图工具库,那么如何使用呢?下面小编给大家分享一下。首先打开pycharm软件,右键单击
- 本文实例为大家分享了python实现日历效果的具体代码,供大家参考,具体内容如下一、代码编程过程1、根据年月日算出星期几def get_we
- 目录本文目标如何使用本教程正则表达式到底是什么?入门测试正则表达式元字符字符转义重复字符类反义替换分组后向引用零宽断言负向零宽断言注释贪婪与
- 第1步:安装cross-envnpm i --save-dev cross-env 第2步:修改各环境下的参数在config/目录下添加te
- 当业务A页面有验证码,且业务B页面也需要验证码。这个时候,如果A和B共用一个验证码,则会出现这种情况:A页面出现验证码,这个时候打开B页面验
- 装饰器基本概念大家都知道装饰器是一个很著名的设计模式,经常被用于 AOP (面向切面编程)的场景,较为经典的有插入日志,性能测试,事务处理,