php的curl封装类用法实例


Posted in PHP onNovember 07, 2014

本文实例讲述了两个php curl封装类的用法实例,这两个函数可以让我们非常的方便的使用php curl相关函数。分享给大家供大家参考。具体如下:

使用函数之前我们要需要把php curl模块打开(libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll)

开启php curl函数库的步骤

1).去掉windows/php.ini 文件里;extension=php_curl.dll前面的; /*用 echo phpinfo();查看php.ini的路径*/
2).把php5/libeay32.dll,ssleay32.dll复制到系统目录windows/下
3).重启apache

代码如下:

<?php

include_once('curl.class.php');

$aa =new Curl('');

 $curlOptions = array(

 CURLOPT_URL => "http://www.xx.com/addTicket.jsp", //访问URL

 CURLOPT_RETURNTRANSFER => true, //获取结果作为字符串返回

 CURLOPT_REFERER => "ww.ww.ww/zw2",

 CURLOPT_HTTPHEADER => array('X-FORWARDED-FOR:139.197.14.19', 'CLIENT-IP:127.0.0.1','Proxy-Client-IP:139.197.14.19','WL-Proxy-Client-IP:139.197.14.19' ),

 CURLOPT_HEADER => 1, //获取返回头信息

 //CURLOPT_SSL_VERIFYPEER => false, //支持SSL加密

 CURLOPT_POST => true, //发送时带有POST参数

 CURLOPT_POSTFIELDS => 'ids=897&Submit=%E6%8A%95%E7%A5%A8', //请求的POST参数字符串

 CURLOPT_TIMEOUT => $aa->timeout //等待响应的时间

 );

 echo $aa->getResponseText($curlOptions);

cul处理类:
<?php

class Curl

{

public $cookieFile;

public $timeout = 160;

Public function __construct($dir){

$this->cookieFile = $this->getTemporaryCookieFileName($dir);

}

/**

* 设置CURL参数并发送请求,获取响应内容

* @access private

* @param $curlOptions array curl设置参数数组

* @return string|false 访问成功,按字符串形式返回获取的信息;否则返回false

*/

public function getResponseText($curlOptions) {

/* 设置CURLOPT_RETURNTRANSFER为true */

if(!isset($curlOptions[CURLOPT_RETURNTRANSFER]) || $curlOptions[CURLOPT_RETURNTRANSFER] == false) {

$curlOptions[CURLOPT_RETURNTRANSFER] = true;

}

/* 初始化curl模块 */

$curl = curl_init();

/* 设置curl选项 */

curl_setopt_array($curl, $curlOptions);

/* 发送请求并获取响应信息 */

$responseText = '';

try {

$responseText = curl_exec($curl);

if(($errno = curl_errno($curl)) != CURLM_OK) {

$errmsg = curl_error($curl);

throw new Exception($errmsg, $errno);

}

} catch (Exception $e) {

//exceptionDisposeFunction($e);

//print_r($e);

$responseText = false;

}

/* 关闭curl模块 */

curl_close($curl);

/* 返回结果 */

return $responseText;

}

/**

* 将Unicode字符串(u0000)转化为utf-8字符串,工具函数

* @access private

* @static

* @param $string string Unicode字符串

* @return string utf-8字符串

*/

public function unicodeToUtf8($string) {

$string = str_replace('u', '', strtolower($string));

$length = strlen($string) / 4;

$stringResult = '';

for($i = 0; $i < $length; $i++) {

$charUnicodeHex = substr($string, $i * 4, 4);

$unicodeCode = hexdec($charUnicodeHex);

$utf8Code = '';

if($unicodeCode < 128) {

$utf8Code = chr($unicodeCode);

} else if($unicodeCode < 2048) {

$utf8Code .= chr(192 + (($unicodeCode - ($unicodeCode % 64)) / 64));

$utf8Code .= chr(128 + ($unicodeCode % 64));

} else {

$utf8Code .= chr(224 + (($unicodeCode - ($unicodeCode % 4096)) / 4096));

$utf8Code .= chr(128 + ((($unicodeCode % 4096) - ($unicodeCode % 64)) / 64));

$utf8Code .= chr(128 + ($unicodeCode % 64));

}

$stringResult .= $utf8Code;

}

return $stringResult;

}

private function getTemporaryCookieFileName($dir='.') {

return (str_replace("", '/', tempnam($dir, 'tmp')));

}

}

 
例子2
<?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('https://3water.com/');

POST用法:
$curl = new Curl();

$curl->get('https://3water.com/', 'p=1&time=0′);

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 将图片按创建时间进行分类存储的实现代码
Jan 05 PHP
PHP 防注入函数(格式化数据)
Aug 08 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
Jun 12 PHP
php中随机函数mt_rand()与rand()性能对比分析
Dec 01 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
Mar 24 PHP
Yii安装与使用Excel扩展的方法
Jul 13 PHP
php事件驱动化设计详解
Nov 10 PHP
PHP实现的mysql读写分离操作示例
May 22 PHP
PHP yield关键字功能与用法分析
Jan 03 PHP
php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析
Mar 02 PHP
php双向队列实例讲解
Nov 17 PHP
PHP使用ob_start生成html页面的方法
Nov 07 #PHP
PHP实现HTML生成PDF文件的方法
Nov 07 #PHP
PHP面向对象精要总结
Nov 07 #PHP
PHP使用feof()函数读文件的方法
Nov 07 #PHP
php几个预定义变量$_SERVER用法小结
Nov 07 #PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
Nov 06 #PHP
php中常见的sql攻击正则表达式汇总
Nov 06 #PHP
You might like
图书管理程序(三)
2006/10/09 PHP
Smarty模板学习笔记之Smarty简介
2014/05/20 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
php的socket编程详解
2016/11/20 PHP
使用ThinkPHP生成缩略图及显示
2017/04/27 PHP
PHP7变量处理机制修改
2021/03/09 PHP
在b/s开发中经常用到的javaScript技术
2006/08/23 Javascript
ECMAScript 基础知识
2007/06/29 Javascript
Javascript中自动切换焦点实现代码
2012/12/15 Javascript
javascript类型转换示例
2014/04/29 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
JS实现窗口加载时模拟鼠标移动的方法
2015/06/03 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
JS 组件系列之 bootstrap treegrid 组件封装过程
2017/04/28 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
Python使用for生成列表实现过程解析
2020/09/22 Python
Python实现自动装机功能案例分析
2020/10/22 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
2021/01/21 Python
使用spring mvc+localResizeIMG实现HTML5端图片压缩上传的功能
2016/12/16 HTML / CSS
Linux开机引导的步骤是什么
2015/10/19 面试题
机械绘图员岗位职责
2013/11/19 职场文书
会务接待方案
2014/02/27 职场文书
留学推荐信范文
2014/05/10 职场文书
2015年党风建设工作总结
2015/04/29 职场文书
2015年党支部书记工作总结
2015/05/21 职场文书
小学班主任工作经验交流材料
2015/11/02 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
2016年师德学习心得体会
2016/01/12 职场文书
导游词之崇武古城
2019/10/07 职场文书
Python绘制地图神器folium的新人入门指南
2021/05/23 Python
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python