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安全防范技巧分享
Nov 03 PHP
PHP数据库链接类(PDO+Access)实例分享
Dec 05 PHP
php根据年月获取季度的方法
Mar 31 PHP
使用PHP接受文件并获得其后缀名的方法
Aug 05 PHP
php开发时容易忘记的一些技术细节
Feb 03 PHP
ThinkPHP的常用配置选项汇总
Mar 24 PHP
PHP获取input输入框中的值去数据库比较显示出来
Nov 16 PHP
关于PHP内置的字符串处理函数详解
Feb 04 PHP
thinkphp关于简单的权限判定方法
Apr 03 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
Sep 30 PHP
thinkphp3.2框架中where条件查询用法总结
Aug 13 PHP
PHP引擎php.ini参数优化深入讲解
Mar 24 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
给多个地址发邮件的类
2006/10/09 PHP
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
php+mysqli实现批量替换数据库表前缀的方法
2014/12/29 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
限制复选框最多选择项的实现代码
2016/05/30 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
2017/05/01 jQuery
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
2017/09/11 Javascript
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
[43:47]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第一场 12.09
2020/12/11 DOTA
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
django文档学习之applications使用详解
2018/01/29 Python
基于python的多进程共享变量正确打开方式
2018/04/28 Python
python之线程通过信号pyqtSignal刷新ui的方法
2019/01/11 Python
Python实现爬取亚马逊数据并打印出Excel文件操作示例
2019/05/16 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
Python flask框架如何显示图像到web页面
2020/06/03 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
美国受欢迎的女性牛仔裤品牌:DL1961
2016/11/12 全球购物
关键字throw与throws的用法差异
2016/11/22 面试题
钳工实习自我鉴定
2013/09/19 职场文书
药品促销活动方案
2014/02/14 职场文书
研究生论文答辩开场白
2015/05/27 职场文书