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 相关文章推荐
以文本方式上传二进制文件的PHP程序
Oct 09 PHP
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
Mar 03 PHP
web站点获取用户IP的安全方法 HTTP_X_FORWARDED_FOR检验
Jun 01 PHP
用mysql_fetch_array()获取当前行数据的方法详解
Jun 05 PHP
php过滤XSS攻击的函数
Nov 12 PHP
php生成随机数的三种方法
Sep 10 PHP
基于命令行执行带参数的php脚本并取得参数的方法
Jan 25 PHP
php array_key_exists() 与 isset() 的区别
Oct 24 PHP
php实现的简单数据库操作Model类
Nov 16 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
PHP mysqli事务操作常用方法分析
Jul 22 PHP
PHP调用接口API封装的例子
Oct 11 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中的类-什么叫类
2006/11/20 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
解析PHP无限级分类方法及代码
2013/06/21 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
通过url查找a元素应用案例
2014/04/29 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
COM组件中调用JavaScript函数详解及实例
2017/02/23 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
JS简单获得节点元素的方法示例
2018/02/10 Javascript
layui问题之模拟select点击事件的实例讲解
2018/08/15 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
2018/08/24 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
haskell实现多线程服务器实例代码
2013/11/26 Python
wxPython使用系统剪切板的方法
2015/06/16 Python
简单易懂的python环境安装教程
2017/07/13 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
Python处理中文标点符号大集合
2018/05/14 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
python简单鼠标自动点击某区域的实例
2019/06/25 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
flask框架配置mysql数据库操作详解
2019/11/29 Python
Python运行DLL文件的方法
2020/01/17 Python
基于matplotlib xticks用法详解
2020/04/16 Python
浅析python连接数据库的重要事项
2021/02/22 Python
客服端调用EJB对象的几个基本步骤
2012/01/15 面试题
什么是抽象
2015/12/13 面试题
工程专业求职自荐书范文
2014/02/08 职场文书
母校寄语大全
2014/04/10 职场文书
卫生系统先进事迹
2014/05/13 职场文书
七一晚会主持词
2015/06/29 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书
利用Selenium添加cookie实现自动登录的示例代码(fofa)
2021/05/08 Python