zoukankan      html  css  js  c++  java
  • Curl客户端

    1.cURL介绍

      cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 cURL 库。

    2.基本结构

      在学习更为复杂的功能之前,先来看一下在PHP中建立cURL请求的基本步骤:

      (1)初始化

         curl_init()

      (2)设置变量

        curl_setopt() 。最为重要,一切玄妙均在此。有一长串cURL参数可供设置,它们能指定URL请求的各个细节。要一次性全部看完并理解可能比较困难,所以今天我们只试一下那些更常用也更有用的选项。

      (3)执行并获取结果

        curl_exec()

      (4)释放cURL句柄

        curl_close()

    3.cURL实现Get和Post

    示例代码:

    <?php
    /**
     * Curl客户端
     * 
     * @author WillMao
     */
    class CurlHelper{
           
        public $ch;
        public $url=null;
        
        public function __construct(){
            $this->ch = curl_init();
        }
    
        public function setUrl($url){
            if(!preg_match('!^w+://!i', $url)) {
                $url = 'http://'.$url;
            }
            $this->url = $url;
        }
        
        public function setOptions($key,$value){
            curl_setopt($this->ch, $key, $value);
        }
        
        public function setDefault($timeout=30,$header=false){
            empty($timeout)?$this->setOptions(CURLOPT_TIMEOUT,30):$this->setOptions(CURLOPT_TIMEOUT,$timeout);
            $this->setOptions(CURLOPT_HEADER,$header);
            $this->setOptions(CURLOPT_RETURNTRANSFER,true);
            $this->setOptions(CURLOPT_FAILONERROR,true);
        }
        /**
         * Curl请求数据
         * @param mixed $url url地址
         * @param mixed $postdata get请求直接留空 post使用数组 array('name'=>'will','age'=>'24')
         * @return mixed url的内容
         */
        public function request($url,$postdata=false){
            $this->setUrl($url);
            
            if(!$this->url){
                return false;
            }else{
                $this->setOptions(CURLOPT_URL,$this->url);
            }
            $this->setDefault();
            if($postdata){
                if(is_array($postdata)){
                    $this->setOptions(CURLOPT_POST,1);
                    $this->setOption(CURLOPT_POSTFIELDS, $postdata);
                }else{
                    throw new Exception('post的数据必须是一个数组形式');
                }
            }
            $return=curl_exec($this->ch);
            if(!$return){
                return false;
            }else{
                return $return;
            }
        }
    }
  • 相关阅读:
    rabbitMq(2)之“Work”模式
    rabbitmq(1)之"Hello World"模式
    Maven的实用基础命令
    RabbitMq(3)之“发布/订阅”模式
    mac rabbitmq安装以及入门
    Mac 安装Homebrew
    多线程通讯之管道
    CentOS中防火墙之iptables
    CentOS中防火墙之Firewall
    Redis的简介
  • 原文地址:https://www.cnblogs.com/520fyl/p/5482509.html
Copyright © 2011-2022 走看看