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函数,php爱好者站推荐
Mar 19 PHP
php SQL Injection with MySQL
Feb 27 PHP
set_include_path和get_include_path使用及注意事项
Feb 02 PHP
Laravel 5框架学习之子视图和表单复用
Apr 09 PHP
分享PHP守护进程类
Dec 30 PHP
PHP自定义错误用法示例
Sep 28 PHP
PHP实现登陆表单提交CSRF及验证码
Jan 24 PHP
PHP实现文件上传功能实例代码
May 18 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
Jun 07 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
Oct 13 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
Sep 25 PHP
PHP7 弃用功能
Mar 09 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+mysql 实现身份验证代码
2010/03/24 PHP
php 各种应用乱码问题的解决方法
2010/05/09 PHP
显示程序执行时间php函数代码
2013/08/29 PHP
php 修改、增加xml结点属性的实现代码
2013/10/22 PHP
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
JavaScript DOM基础
2015/04/13 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
jQuery简单实现tab选项卡切换效果
2016/06/20 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
小程序实现多列选择器
2019/02/15 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
React中使用UMEditor的方法示例
2019/12/27 Javascript
JavaScript语句错误throw、try及catch实例解析
2020/08/18 Javascript
vant中的toast轻提示实现代码
2020/11/04 Javascript
Python遍历目录的4种方法实例介绍
2015/04/13 Python
python 动态加载的实现方法
2017/12/22 Python
Django 连接sql server数据库的方法
2018/06/30 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
2018/12/24 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
Python如何爬取微信公众号文章和评论(基于 Fiddler 抓包分析)
2019/06/28 Python
基于python的Paxos算法实现
2019/07/03 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
英国折扣高尔夫商店:Discount Golf Store
2019/11/19 全球购物
国贸类专业毕业生的求职信分享
2013/12/08 职场文书
浪费资源的建议书
2014/03/12 职场文书
教师四风问题对照检查材料
2014/09/26 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
2015大学党建带团建工作总结
2015/07/23 职场文书
django如何自定义manage.py管理命令
2021/04/27 Python
一小时学会TensorFlow2之基本操作2实例代码
2021/09/04 Python