一个好用的Curl的类

偶尔之中看到一篇关于curl的文字,里面的类挺好用的。

cURL 是一个利用 URL 语法规定来传输文件和数据的工具,支持很多协议,如 HTTP、FTP、TELNET 等。最爽的是,PHP 也支持 cURL 库。使用 PHP 的 cURL 库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容.


 /**
     * @param $url 请求网址
     * @param bool $params 请求参数
     * @param int $ispost 请求方式
     * @param int $https https协议
     * @return bool|mixed
     */
    public static function curl($url, $params = false, $ispost = 0, $https = 0)
    {
        $httpInfo = array();
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        if ($https) {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
        }
        if ($ispost) {
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
            curl_setopt($ch, CURLOPT_URL, $url);
        } else {
            if ($params) {
                if (is_array($params)) {
                    $params = http_build_query($params);
                }
                curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
            } else {
                curl_setopt($ch, CURLOPT_URL, $url);
            }
        }

        $response = curl_exec($ch);

        if ($response === FALSE) {
            //echo "cURL Error: " . curl_error($ch);
            return false;
        }
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $httpInfo = array_merge($httpInfo, curl_getinfo($ch));
        curl_close($ch);
        return $response;
    }
/**  
    * @param $url 请求网址  
    * @param bool $params 请求参数  
    * @param int $ispost 请求方式  
    * @param int $https https协议  
    * @return bool|mixed  
    */  
   public static function curl($url, $params = false, $ispost = 0, $https = 0)  
   {  
       $httpInfo = array();  
       $ch = curl_init();  
       curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);  
       curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');  
       curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);  
       curl_setopt($ch, CURLOPT_TIMEOUT, 30);  
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
       if ($https) {  
           curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查  
           curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在  
       }  
       if ($ispost) {  
           curl_setopt($ch, CURLOPT_POST, true);  
           curl_setopt($ch, CURLOPT_POSTFIELDS, $params);  
           curl_setopt($ch, CURLOPT_URL, $url);  
       } else {  
           if ($params) {  
               if (is_array($params)) {  
                   $params = http_build_query($params);  
               }  
               curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);  
           } else {  
               curl_setopt($ch, CURLOPT_URL, $url);  
           }  
       }  
  
       $response = curl_exec($ch);  
  
       if ($response === FALSE) {  
           //echo "cURL Error: " . curl_error($ch);  
           return false;  
       }  
       $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
       $httpInfo = array_merge($httpInfo, curl_getinfo($ch));  
       curl_close($ch);  
       return $response;  
   }  


关于使用

// 发送请求  
$result = self::curl('网址', '参数', true);  
// 收到的数据需要转化一下  
$json = json_decode($result);  


上面内容属于转载,尊重作者,文章出处请点击


关于本文章有人评论:CURL ,必备技能,不过现在大部分情况下直接使用 Guzzle


于是本着好奇的心态看了一眼什么事Guzzle,原谅我孤陋寡闻。甚至还不知道这个单词怎么读,这里可以查看英文文档


------------------------------------------------华丽的分割线--------------------------------------------------------------------------------------------------------------------


Guzzle是什么?

cURL是利用PHP发送HTTP请求最常用的标准方式。它比fopen这种方式更强大。

Guzzle, 是 cURL 的一个封装,使得这个功能甚至更好,此外还增了新的功能。

使用这个框架内,我们可以发送并行+持久连接。并且能够通过插件实现缓存,OAuth, AWS集成。

一个稳定的框架实现利用PHP发送HTTP请求 - Guzzle

该框架是非常稳定,甚至用在Drupal核心,并且可以迅速融入任何代码。

项目地址: http://guzzlephp.org/
下载地址: https://github.com/guzzle/guzzle
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值