Home  >  Article  >  Backend Development  >  Usage examples of php's curl encapsulation class

Usage examples of php's curl encapsulation class

高洛峰
高洛峰Original
2016-12-23 15:31:461226browse

The examples in this article describe two usage examples of the php curl encapsulation class. These two functions allow us to use php curl related functions very conveniently. Share it with everyone for your reference. The details are as follows:

Before using the function, we need to open the php curl module (libeay32.dll, ssleay32.dll, php5ts.dll, php_curl.dll)

Steps to open the php curl function library

1). Remove windows/ In the php.ini file; in front of extension=php_curl.dll; /*Use echo phpinfo(); to view the path of php.ini*/
2). Copy php5/libeay32.dll and ssleay32.dll to the system directory windows/ Next
3). Restart apache

The code is as follows:

<?php
include_once(&#39;curl.class.php&#39;);
$aa =new Curl(&#39;&#39;);
 $curlOptions = array(
 CURLOPT_URL => "http://www.xx.com/addTicket.jsp", //访问URL
 CURLOPT_RETURNTRANSFER => true, //获取结果作为字符串返回
 CURLOPT_REFERER => "ww.ww.ww/zw2",
 CURLOPT_HTTPHEADER => array(&#39;X-FORWARDED-FOR:139.197.14.19&#39;, &#39;CLIENT-IP:127.0.0.1&#39;,&#39;Proxy-Client-IP:139.197.14.19&#39;,&#39;WL-Proxy-Client-IP:139.197.14.19&#39; ),
 CURLOPT_HEADER => 1, //获取返回头信息
 //CURLOPT_SSL_VERIFYPEER => false, //支持SSL加密
 CURLOPT_POST => true, //发送时带有POST参数
 CURLOPT_POSTFIELDS => &#39;ids=897&Submit=%E6%8A%95%E7%A5%A8&#39;, //请求的POST参数字符串
 CURLOPT_TIMEOUT => $aa->timeout //等待响应的时间
 );
 echo $aa->getResponseText($curlOptions);


cul processing class:

<?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 = &#39;&#39;;
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(&#39;u&#39;, &#39;&#39;, strtolower($string));
$length = strlen($string) / 4;
$stringResult = &#39;&#39;;
for($i = 0; $i < $length; $i++) {
$charUnicodeHex = substr($string, $i * 4, 4);
$unicodeCode = hexdec($charUnicodeHex);
$utf8Code = &#39;&#39;;
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=&#39;.&#39;) {
return (str_replace("", &#39;/&#39;, tempnam($dir, &#39;tmp&#39;)));
}
}


Example 2

<?php
//curl类
class Curl
{
    function Curl(){
        return true;
    }
     
    function execute($method, $url, $fields=&#39;&#39;, $userAgent=&#39;&#39;, $httpHeaders=&#39;&#39;, $username=&#39;&#39;, $password=&#39;&#39;){
        $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 != &#39;&#39;){
            curl_setopt($ch, CURLOPT_USERPWD, $username . &#39;:&#39; . $password);
        }
        $method = strtolower($method);
        if(&#39;post&#39; == $method){
            curl_setopt($ch, CURLOPT_POST, true);
            if(is_array($fields)){
                $sets = array();
                foreach ($fields AS $key => $val){
                    $sets[] = $key . &#39;=&#39; . urlencode($val);
                }
                $fields = implode(&#39;&&#39;,$sets);
            }
            curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
        }else if(&#39;put&#39; == $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 = &#39;&#39;, $httpHeaders = &#39;&#39;, $username = &#39;&#39;, $password = &#39;&#39;){
        $ret = Curl::execute(&#39;POST&#39;, $url, $fields, $userAgent, $httpHeaders, $username, $password);
        if(false === $ret){
            return false;
        }
        if(is_array($ret)){
            return false;
        }
        return $ret;
    }
     
    function get($url, $userAgent = &#39;&#39;, $httpHeaders = &#39;&#39;, $username = &#39;&#39;, $password = &#39;&#39;){
        $ret = Curl::execute(&#39;GET&#39;, $url, &#39;&#39;, $userAgent, $httpHeaders, $username, $password);
        if(false === $ret){
            return false;
        }
        if(is_array($ret)){
            return false;
        }
        return $ret;
    }
     
    function create(){
        $ch = null;
        if(!function_exists(&#39;curl_init&#39;)){
            return false;
        }
        $ch = curl_init();
        if(!is_resource($ch)){
            return false;
        }
        return $ch;
    }
}
?>

usage


GET usage:

$curl = new Curl();
$curl->get(&#39;http://www.php.cn/&#39;);

POST usage:

$curl = new Curl();
$curl->get(&#39;http://www.php.cn/&#39;, &#39;p=1&time=0′);

I hope this article The above will be helpful for everyone's PHP programming.

For more articles related to PHP’s curl encapsulation class usage examples, please pay attention to the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn