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 相关文章推荐
同时提取多条新闻中的文本一例
Oct 09 PHP
Discuz 模板引擎的封装类代码
Jul 18 PHP
smarty巧妙处理iframe中内容页的代码
Mar 07 PHP
PHP可逆加密/解密函数分享
Sep 25 PHP
php多个字符串替换成同一个的解决方法
Jun 18 PHP
解析curl提交GET,POST,Cookie的简单方法
Jun 29 PHP
带密匙的php加密解密示例分享
Jan 29 PHP
PHP中使用memcache存储session的三种配置方法
Apr 05 PHP
php获取网站百度快照日期的方法
Jul 29 PHP
详解PHP中的外观模式facade pattern
Feb 05 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
Oct 23 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
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
$.getJSON在IE下失效的原因分析及解决方法
2013/06/16 Javascript
js正则匹配出所有图片及图片地址src的方法
2015/06/08 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
探讨AngularJs中ui.route的简单应用
2016/11/16 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
浅谈node中的cluster集群
2018/06/02 Javascript
javascript实现导航栏分页效果
2019/06/27 Javascript
javascript中this的用法实践分析
2019/07/29 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[54:15]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第二场2月1日
2021/03/11 DOTA
Python 时间处理datetime实例
2008/09/06 Python
Python装饰器基础详解
2016/03/09 Python
Python字符编码与函数的基本使用方法
2017/09/30 Python
python实现员工管理系统
2018/01/11 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
利用Python如何生成便签图片详解
2018/07/09 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
Python time库基本使用方法分析
2019/12/13 Python
python 解决cv2绘制中文乱码问题
2019/12/23 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
python如何导入依赖包
2020/07/13 Python
财务主管的岗位职责
2013/12/30 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
django如何自定义manage.py管理命令
2021/04/27 Python
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技