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 和 MySQL 开发的 8 个技巧
Oct 09 PHP
php基础知识:类与对象(5) static
Dec 13 PHP
php strstr查找字符串中是否包含某些字符的查找函数
Jun 03 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
Apr 19 PHP
深入理解:XML与对象的序列化与反序列化
Jun 08 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 PHP
PHP采集类snoopy详细介绍(snoopy使用教程)
Jun 19 PHP
WordPress中用于检索模版的相关PHP函数使用解析
Dec 15 PHP
PHP微信公众号自动发送红包API
Jun 01 PHP
redirect_uri参数错误的解决方法(必看)
Feb 16 PHP
Laravel框架自定义分页样式操作示例
Jan 26 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
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
2015/04/14 PHP
php进程间通讯实例分析
2016/07/11 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
react实现同页面三级跳转路由布局
2019/09/26 Javascript
jquery实现垂直手风琴菜单
2020/03/04 jQuery
[54:56]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第三局
2016/03/06 DOTA
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
python3中set(集合)的语法总结分享
2017/03/24 Python
深入理解Python单元测试unittest的使用示例
2017/11/18 Python
Python pycharm 同时加载多个项目的方法
2019/01/17 Python
决策树剪枝算法的python实现方法详解
2019/09/18 Python
CSS3打造百度贴吧的3D翻牌效果示例
2017/01/04 HTML / CSS
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
自荐书范文
2013/12/08 职场文书
档案室主任岗位职责
2014/02/12 职场文书
项目采购员岗位职责
2014/04/15 职场文书
法人委托书范本格式
2014/09/15 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
党的群众路线教育实践活动个人整改措施
2014/10/27 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
八一建军节主持词
2015/07/01 职场文书