关于CURL的初步认识

前言:你知道?这个CURL可以做爬虫的工作但是仅限于小型的爬虫..............

(一) CURL的认识

  下面我觉得用图片来展示curl比较直观:
  

   所谓的curl就是客户端访问了服务器1,那么服务器1又模拟了服务客户端去访问了服务器2,然后拿到结果后一层层返回,并且curl以第三方的扩展库存在所以要用到必须要开启这个扩展.

(二)curl分类

  分为get访问和post访问

(三)curl模拟get请求

  

<?php

echo 't1.php<br/>';

//使用curl模拟get请求
#1. 初始化curl连接
$ch = curl_init();

//请求的新的链接地址
$url = 'http://969m2z.natappfree.cc/t2.php?name=小风风&age=18&height=1.9';

#2. 设置curl选项
// 设置请求URL地址
curl_setopt($ch,CURLOPT_URL,$url);
// 不获取header头信息
curl_setopt($ch,CURLOPT_HEADER,0);
// 结果不直接返回到终端
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
// 设置curl不进行证书的检测
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);

// 超时时间 秒
curl_setopt($ch,CURLOPT_TIMEOUT,10);
// 设置请求的浏览器
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36');

#3. 执行curl
$data = curl_exec($ch);

#4. 关闭curl连接
curl_close($ch);


var_dump($data);

echo '<hr/>';

echo '哈哈哈哈哈,看的到我么?';
<?php

#访问的第二个网站的代码

echo 't2.php<br/>';

var_dump( $_GET ); 

 

(四)curl的post请求

//在实现get请求的基础上需要增加的设置项:
//
发起POST请求 curl_setopt($ch,CURLOPT_POST,1); // post发送的数据,注意http_build_query可以将$data数组数据格式化成http传输数据的格式 curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data));

 

 

(五)用curl实现获取access_token(这个是调用公众号唯一的凭证有效期2小时)

<?php

include './request.php';//引入curl函数

class NewWeixin{

    const appID = 'xxxxxxx';//开发者的appid
    const appsecret = 'xxxxxx';//开发者的加密密钥

    #获取access_token的方法
    public function getACToken(){ 

        $filePath = __DIR__ . '/' . self::appID . '.txt';//存储accesstoken的文件

        if( is_file($filePath) && filemtime($filePath)+7200>time()){//如果存储accesstoken的文件存在并且最后修改时间没有超过2个小时,说明accesstoken还在有效期内
            
            return file_get_contents($filePath);//那么,直接从文件中读取出accesstoken
        }
        //能够执行到这里说明要么文件不存在,要么文件存在但是accesstoken过期了

        //获取access_token的接口
        $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s';
        $url = sprintf($url, self::appID, self::appsecret);
        $json = curl($url);
        $data = json_decode($json);//因为得到的结果将会是一个json字符串,所以要将这个字符串转换成一个数组
        
        //将accesstoken覆盖写入进文件
        file_put_contents($filePath, $data->access_token);

        //调用curl函数请求接口api
        return $data->access_token;
    }
}

$obj = new NewWeixin;
echo $obj->getACToken();


 

posted @ 2018-12-26 20:41  江世文  阅读(314)  评论(0编辑  收藏  举报