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 相关文章推荐
使用 MySQL 开始 PHP 会话
Dec 21 PHP
PHP 文章中的远程图片采集到本地的代码
Jul 30 PHP
基于PHP常用字符串的总结(待续)
Jun 07 PHP
web server使用php生成web页面的三种方法总结
Oct 28 PHP
php实现最简单的MVC框架实例教程
Sep 08 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
Dec 05 PHP
php三种实现多线程类似的方法
Oct 30 PHP
php文件上传后端处理小技巧
May 22 PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
Apr 04 PHP
详解php命令注入攻击
Apr 06 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
Sep 16 PHP
对laravel in 查询的使用方法详解
Oct 09 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
认识并使用PHP超级全局变量
2010/01/26 PHP
ThinkPHP惯例配置文件详解
2014/07/14 PHP
php中JSON的使用与转换
2015/01/14 PHP
微信API接口大全
2015/04/15 PHP
php类常量用法实例分析
2015/07/09 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
使用CamanJS在Web页面上处理图像的技巧
2015/08/18 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
vue axios数据请求及vue中使用axios的方法
2018/09/10 Javascript
Vue框架下引入ActiveX控件的问题解决
2019/03/25 Javascript
[01:18:43]2014 DOTA2华西杯精英邀请赛5 24 iG VS DK
2014/05/25 DOTA
python赋值操作方法分享
2013/03/23 Python
详解Python中的type()方法的使用
2015/05/21 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
python3.7.0的安装步骤
2018/08/27 Python
重构Python代码的六个实例
2020/11/25 Python
HTML5 input placeholder 颜色修改示例
2014/05/30 HTML / CSS
详解HTML5 录音的踩坑之旅
2017/12/26 HTML / CSS
澳大利亚电子产品购物网站:Dick Smith
2017/02/02 全球购物
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
寒假实习自荐信
2014/01/26 职场文书
大学生活动策划方案
2014/02/10 职场文书
学习十八大坚定理想信念心得体会
2014/03/11 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
终止劳动合同协议书
2014/04/14 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书