php实现的Curl封装类Curl.class.php用法实例分析


Posted in PHP onSeptember 25, 2015

本文实例讲述了php实现的Curl封装类Curl.class.php用法。分享给大家供大家参考。具体如下:

<?php
//curl类
class Curl
{
 function Curl(){
  return true;
 }
 function execute($method, $url, $fields='', $userAgent='', $httpHeaders='', $username='', $password=''){
  $ch = Curl::create();
  if(false === $ch){
   return false;
  }
  if(is_string($url) && strlen($url)){
   $ret = curl_setopt($ch, CURLOPT_URL, $url);
  }else{
   return false;
  }
  //是否显示头部信息
  curl_setopt($ch, CURLOPT_HEADER, false);
  //
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  if($username != ''){
   curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);
  }
  $method = strtolower($method);
  if('post' == $method){
   curl_setopt($ch, CURLOPT_POST, true);
   if(is_array($fields)){
    $sets = array();
    foreach ($fields AS $key => $val){
     $sets[] = $key . '=' . urlencode($val);
    }
    $fields = implode('&',$sets);
   }
   curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
  }else if('put' == $method){
   curl_setopt($ch, CURLOPT_PUT, true);
  }
  //curl_setopt($ch, CURLOPT_PROGRESS, true);
  //curl_setopt($ch, CURLOPT_VERBOSE, true);
  //curl_setopt($ch, CURLOPT_MUTE, false);
  curl_setopt($ch, CURLOPT_TIMEOUT, 10);//设置curl超时秒数
  if(strlen($userAgent)){
   curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
  }
  if(is_array($httpHeaders)){
   curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeaders);
  }
  $ret = curl_exec($ch);
  if(curl_errno($ch)){
   curl_close($ch);
   return array(curl_error($ch), curl_errno($ch));
  }else{
   curl_close($ch);
   if(!is_string($ret) || !strlen($ret)){
    return false;
   }
   return $ret;
  }
 }
 function post($url, $fields, $userAgent = '', $httpHeaders = '', $username = '', $password = ''){
  $ret = Curl::execute('POST', $url, $fields, $userAgent, $httpHeaders, $username, $password);
  if(false === $ret){
   return false;
  }
  if(is_array($ret)){
   return false;
  }
  return $ret;
 }
 function get($url, $userAgent = '', $httpHeaders = '', $username = '', $password = ''){
  $ret = Curl::execute('GET', $url, '', $userAgent, $httpHeaders, $username, $password);
  if(false === $ret){
   return false;
  }
  if(is_array($ret)){
   return false;
  }
  return $ret;
 }
 function create(){
  $ch = null;
  if(!function_exists('curl_init')){
   return false;
  }
  $ch = curl_init();
  if(!is_resource($ch)){
   return false;
  }
  return $ch;
 }
}
?>

GET用法:

$curl = new Curl();
$curl->get('http://www.XXX.com/');

POST用法:

$curl = new Curl();
$curl->get('http://www.XXX.com/', 'p=1&time=0');

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

PHP 相关文章推荐
ASP知识讲座四
Oct 09 PHP
在PHP中养成7个面向对象的好习惯
Jan 28 PHP
PHP 年龄计算函数(精确到天)
Jun 07 PHP
thinkphp 一个页面使用2次分页的实现方法
Jul 15 PHP
php使用百度天气接口示例
Apr 22 PHP
PHP对象递归引用造成内存泄漏分析
Aug 28 PHP
php基于str_pad实现卡号不足位数自动补0的方法
Nov 12 PHP
php将数组转换成csv格式文件输出的方法
Mar 14 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
Jun 09 PHP
YII2框架使用控制台命令的方法分析
Mar 18 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
Apr 04 PHP
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
Apr 01 PHP
php实现的微信红包算法分析(非官方)
Sep 25 #PHP
PHP简单实现断点续传下载的方法
Sep 25 #PHP
分享3个php获取日历的函数
Sep 25 #PHP
PHP中配置IIS7实现基本身份验证的方法
Sep 24 #PHP
常见PHP数据库解决方案分析介绍
Sep 24 #PHP
又十个超级有用的PHP代码片段
Sep 24 #PHP
PHP易混淆知识整理笔记
Sep 24 #PHP
You might like
PHP脚本的10个技巧(7)
2006/10/09 PHP
apache+php+mysql安装配置方法小结
2010/08/01 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
php一些错误处理的方法与技巧总结
2013/08/10 PHP
Yii CGridView用法实例详解
2016/07/12 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
Sample script that deletes a SQL Server database
2007/06/16 Javascript
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
File, FileReader 和 Ajax 文件上传实例分析(php)
2011/04/27 Javascript
jQuery中创建实例与原型继承揭秘
2011/12/21 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
Javascript中的apply()方法浅析
2015/03/15 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
javascript基础知识讲解
2017/01/11 Javascript
vue router2.0二级路由的简单使用
2017/07/05 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
2018/09/16 Javascript
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
跟老齐学Python之复习if语句
2014/10/02 Python
Python遍历目录中的所有文件的方法
2016/07/08 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
Python实现时钟显示效果思路详解
2018/04/11 Python
Python 复平面绘图实例
2019/11/21 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
纪念九一八事变演讲稿:勿忘国耻
2014/09/14 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
陕西导游词
2015/02/04 职场文书
迎国庆主题班会
2015/08/17 职场文书
小学三年级数学教学反思
2016/02/16 职场文书
高一英语教学反思
2016/03/03 职场文书