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
ADODB的数据库封包程序库
Dec 31 PHP
php Try Catch异常测试
Mar 01 PHP
PHP 引用文件技巧
Mar 02 PHP
php设计模式 Factory(工厂模式)
Jun 26 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
Jul 23 PHP
php 模拟post_验证页面的返回状态(实例讲解)
Oct 28 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
Jan 07 PHP
PHP二维数组去重实例分析
Nov 18 PHP
php实现统计二进制中1的个数算法示例
Jan 23 PHP
ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
Apr 03 PHP
Yii框架连表查询操作示例
Sep 06 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
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
php中常用字符串处理代码片段整理
2011/11/07 PHP
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
PHP设置Cookie的HTTPONLY属性方法
2017/02/09 PHP
替换php字符串中的单引号为双引号的方法
2017/02/16 PHP
js冒泡法和数组转换成字符串示例代码
2013/08/14 Javascript
JavaScript禁止页面操作的示例代码
2013/12/17 Javascript
javascript闭包入门示例
2014/04/30 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
详解在Angular项目中添加插件ng-bootstrap
2017/07/04 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
2019/05/14 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
[37:45]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第二场 12.09
2020/12/11 DOTA
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
Python中的测试模块unittest和doctest的使用教程
2015/04/14 Python
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
2019/08/22 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
在Python中利用pickle保存变量的实例
2019/12/30 Python
使用Tkinter制作信息提示框
2020/02/18 Python
RIP版本1跟版本2的区别
2013/12/30 面试题
大学优秀班集体申报材料
2014/05/23 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
个人更名证明
2015/06/23 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle
使用python创建股票的时间序列可视化分析
2022/03/03 Python