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读取纯真ip数据库使用示例
Jan 26 PHP
php列出mysql表所有行和列的方法
Mar 13 PHP
php curl 上传文件代码实例
Apr 27 PHP
php源码分析之DZX1.5加密解密函数authcode用法
Jun 17 PHP
win平台安装配置Nginx+php+mysql 环境
Jan 12 PHP
Joomla数据库操作之JFactory::getDBO用法
May 05 PHP
教你在header中隐藏php的版本信息
Aug 10 PHP
php set_include_path函数设置 include_path 配置选项
Oct 30 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
如何直接访问php实例对象中的private属性详解
Oct 12 PHP
YII框架模块化处理操作示例
Apr 26 PHP
Laravel 读取 config 下的数据方法
Oct 13 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
php array_intersect()函数使用代码
2009/01/14 PHP
php 保留小数点
2009/04/21 PHP
php strrpos()与strripos()函数
2013/08/31 PHP
PHP中phar包的使用教程
2017/06/14 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
jQuery UI-Draggable 参数集合
2010/01/10 Javascript
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
关于JavaScript限制字数的输入框的那些事
2016/08/14 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
AngularJS实现的回到顶部指令功能实例
2017/05/17 Javascript
js图片轮播插件的封装
2017/07/21 Javascript
2种简单的js倒计时方式
2017/10/20 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
BootStrap中的模态框(modal,弹出层)功能示例代码
2018/11/02 Javascript
ES6新增的数组知识实例小结
2020/05/23 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
python获取程序执行文件路径的方法(推荐)
2018/04/26 Python
分析python请求数据
2018/08/19 Python
在Pycharm中修改文件默认打开方式的方法
2019/01/17 Python
Python遍历文件夹 处理json文件的方法
2019/01/22 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
2020/11/12 Python
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
安踏官方商城:anta.cn
2019/12/16 全球购物
淘宝中秋节活动方案
2014/01/31 职场文书
平安工地建设方案
2014/05/06 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
房地产公司工程部经理岗位职责
2015/04/09 职场文书
2015小学毕业班工作总结
2015/07/21 职场文书
python中subplot大小的设置步骤
2021/06/28 Python
MySQL中B树索引和B+树索引的区别详解
2022/03/03 MySQL
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS