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 相关文章推荐
网站当前的在线人数
Oct 09 PHP
PHP小技巧搜集,每个PHPer都来露一手
Jan 02 PHP
php 应用程序安全防范技术研究
Sep 25 PHP
php不用内置函数对数组排序的两个算法代码
Feb 08 PHP
PHP中的cookie不用刷新就生效的方法
Feb 04 PHP
关于js和php对url编码的处理方法
Mar 04 PHP
destoon供应信息title调用出公司名称的方法
Aug 22 PHP
ThinkPHP表单自动验证实例
Oct 13 PHP
PHP5.2下preg_replace函数的问题
May 08 PHP
Zend Framework入门教程之Zend_Config组件用法详解
Dec 09 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
Jun 20 PHP
PHP levenshtein()函数用法讲解
Mar 08 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
索尼ICF-SW100收音机评测
2021/03/02 无线电
十天学会php之第三天
2006/10/09 PHP
PHP Mysql编程之高级技巧
2008/08/27 PHP
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
2011/05/18 PHP
PHP中对用户身份认证实现两种方法
2011/06/04 PHP
PHPAnalysis中文分词类详解
2014/06/13 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
php中print(),print_r(),echo()的区别详解
2014/12/01 PHP
推荐几个开源的微信开发项目
2014/12/28 PHP
PHP Include文件实例讲解
2019/02/15 PHP
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
JavaScript实现动态创建CSS样式规则方案
2014/09/06 Javascript
node.js读取文件到字符串的方法
2015/06/29 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
2016/04/01 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
nodejs操作mysql实现增删改查的实例
2017/05/28 NodeJs
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
JavaScript实现文件下载并重命名代码实例
2019/12/12 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
python的tkinter布局之简单的聊天窗口实现方法
2014/09/03 Python
Python实现的远程文件自动打包并下载功能示例
2019/07/12 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
python中slice参数过长的处理方法及实例
2020/12/15 Python
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
YSL圣罗兰美妆俄罗斯官网:Yves Saint Lauret RU
2020/09/23 全球购物
个人委托书范本
2014/04/02 职场文书
2015入党自传书范文
2015/06/26 职场文书
户外拓展训练感想
2015/08/07 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android