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设计模式中的工厂模式
Jun 12 PHP
兼容性比较好的PHP生成缩略图的代码
Jan 12 PHP
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
Dec 05 PHP
PHP 透明水印生成代码
Aug 27 PHP
深入PHP获取随机数字和字母的方法详解
Jun 06 PHP
ThinkPHP模板输出display用法分析
Nov 26 PHP
浅谈COOKIE和SESSION区别
Jul 19 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
Dec 17 PHP
PHP记录页面停留时间的方法
Mar 30 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
Nov 15 PHP
PHP的PDO预定义常量讲解
Jan 24 PHP
php+lottery.js实现九宫格抽奖功能
Jul 21 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
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
php 生成唯一id的几种解决方法
2013/03/08 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
thinkphp实现图片上传功能
2016/01/13 PHP
PHP安装memcache扩展的步骤讲解
2019/02/14 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
2020/02/03 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
javascript字典探测用户名工具
2006/10/05 Javascript
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
javascript验证身份证号
2015/03/03 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
2018/01/18 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
Vue中使用Sortable的示例代码
2018/04/07 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
es6函数之严格模式用法实例分析
2020/03/17 Javascript
浅谈vant组件Picker 选择器选单选问题
2020/11/04 Javascript
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
利用Python如何画一颗心、小人发射爱心
2021/02/21 Python
中国最大的名表商城:万表网
2016/08/29 全球购物
大学生毕业求职的自我评价
2013/09/29 职场文书
社区平安建设方案
2014/05/25 职场文书
管理标语大全
2014/06/24 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
校长新学期致辞
2015/07/30 职场文书
九年级语文教学反思
2016/03/03 职场文书
Python图像处理之图像拼接
2021/04/28 Python
讨论nginx location 顺序问题
2022/05/30 Servers