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 相关文章推荐
基于mysql的bbs设计(一)
Oct 09 PHP
smarty巧妙处理iframe中内容页的代码
Mar 07 PHP
php 调试利器debug_print_backtrace()
Jul 23 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
PHP实现多文件上传的方法
Jul 08 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
Dec 25 PHP
PHP实现伪静态方法汇总
Jan 13 PHP
php远程下载类分享
Apr 13 PHP
php简单实现sql防注入的方法
Apr 22 PHP
php简单复制文件的方法
May 09 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
PHP如何使用cURL实现Get和Post请求
Jul 11 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代码
2010/08/08 PHP
PHP新手入门学习方法
2011/05/08 PHP
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
js和jquery对dom节点的操作(创建/追加)
2013/04/21 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
浅析Jquery操作select
2016/12/13 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
JS去除字符串中空格的方法
2017/02/14 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
javascript实现的图片预览功能
2017/03/25 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
2018/05/29 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
在Python中实现贪婪排名算法的教程
2015/04/17 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
使用Fabric自动化部署Django项目的实现
2019/09/27 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
python实现的Iou与Giou代码
2020/01/18 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
Python 创建守护进程的示例
2020/09/29 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
VELTRA台湾:世界自由行专家
2017/08/15 全球购物
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
中药专业大学生医药工作求职信
2013/10/25 职场文书
影视制作岗位职责
2013/12/04 职场文书
班组安全员工作职责
2014/02/01 职场文书
读书活动实施方案
2014/03/10 职场文书
《彩色世界》教学反思
2014/04/12 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
2015小学教师年度工作总结
2015/05/12 职场文书
全民创业工作总结
2015/08/13 职场文书
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL