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单件模式结合命令链模式使用说明
Sep 07 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
May 04 PHP
php date()日期时间函数详解
May 16 PHP
php小偷相关截取函数备忘
Nov 28 PHP
php中sprintf与printf函数用法区别解析
Feb 17 PHP
关于js和php对url编码的处理方法
Mar 04 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
May 10 PHP
PHP错误Warning:mysql_query()解决方法
Oct 24 PHP
简介PHP的Yii框架中缓存的一些高级用法
Mar 29 PHP
php生成图片验证码的方法
Apr 15 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
PHP合并两个或多个数组的方法
Jan 20 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
linux php mysql数据库备份实现代码
2009/03/10 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
php操作xml入门之cdata区段
2015/01/23 PHP
php中实现可以返回多个值的函数实例
2015/03/21 PHP
微信access_token的获取开发示例
2015/04/16 PHP
将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
2016/03/03 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
js处理表格对table进行修饰
2014/05/26 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
2014/11/26 Javascript
DOM 事件流详解
2015/01/20 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
简单了解JavaScript异步
2019/05/23 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
[01:18]PWL开团时刻DAY4——圣剑与抢盾
2020/11/03 DOTA
python实现复制整个目录的方法
2015/05/12 Python
windows下ipython的安装与使用详解
2016/10/20 Python
Python时间获取及转换知识汇总
2017/01/11 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
2017/01/18 Python
python常见排序算法基础教程
2017/04/13 Python
Python反射的用法实例分析
2018/02/11 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
python 二维矩阵转三维矩阵示例
2019/11/30 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
python 爬虫如何实现百度翻译
2020/11/16 Python
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
学生会招新策划书
2014/02/14 职场文书
导师工作推荐信范文
2014/05/17 职场文书
三八节标语
2014/06/27 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书