zoukankan      html  css  js  c++  java
  • PHP实现curl post和get

    CURL这里就不说明了。以下是简单案例

    一、POST

    //初始化
        $curl = curl_init();
        //设置抓取的url
        curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
        //设置头文件的信息作为数据流输出
        curl_setopt($curl, CURLOPT_HEADER, 1);
        //设置获取的信息以文件流的形式返回,而不是直接输出。
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        //设置post方式提交
        curl_setopt($curl, CURLOPT_POST, 1);
        //设置post数据
        $post_data = array(
            "username" => "coder",
            "password" => "12345"
            );
        curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
        //执行命令
        $data = curl_exec($curl);
        //关闭URL请求
        curl_close($curl);
        //显示获得的数据
        print_r($data);
    POST
    
     private function _set_headers($user_agent , $client_ip )
        {
            $this->headers = [
                'Content-Type: application/json;charset=UTF-8',
                'Authorization: '. self::APP_KEY.':'.$this->sign,
                'Date: ' .$this->gmt_date,
                'Content-Length: ' .$this->content_len,
                'X-FORWARDED-FOR:'. $client_ip,
                'CLIENT-IP:'. $client_ip,
                'User-Agent:'.$user_agent
            ];
        }
    
        private function http_post_json($url, $jsonStr)
        {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $this->headers);
            //curl_setopt($ch,CURLOPT_PROXY,'118.0.0.1:8888');
            $response = curl_exec($ch);
    
            $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            curl_close($ch);
            return ['code' => $httpCode, 'msg' => $response];
        }

    二、GET

    //初始化
        $curl = curl_init();
        //设置抓取的url
        curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
        //设置头文件的信息作为数据流输出
        curl_setopt($curl, CURLOPT_HEADER, 1);
        //设置获取的信息以文件流的形式返回,而不是直接输出。
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        //执行命令
        $data = curl_exec($curl);
        //关闭URL请求
        curl_close($curl);
        //显示获得的数据
        print_r($data);
    GET
    
     //get获取合力token
        private function http_get_token()
        {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, self::GET_ACCESS_TOKEN_URL);
            curl_setopt($ch, CURLOPT_HEADER, 1);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $data = curl_exec($ch);
            var_dump($data);die;
            $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            curl_close($ch);
            return ['code' => $httpCode, 'msg' => CJSON::decode($data, true)];
        }
    /**
         * 发起HTTP GET请求
         * 
         * @param string $url 请求URL
         * @param string $host 请求主机HOST
         * @param array $params 请求参数
         */
        public function http_get($url, $host = '', $params = array(), $timeout=3, $ms = false){
            if(is_array($params)){
                $getString= '';
                $getParams = array();
                foreach ($params as $key=>$val) {
                    $getParams[] = $key.'='.($val);
                    $getString = implode('&', $getParams);
                }
                //$getString = http_build_query($params);
            }else{
                $getString = $params;   
            }
            $url .= "?" . $getString;
            if (function_exists('curl_init')) {
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL, $url);
                if(!empty($host)){
                    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: ' . $host));
                }
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($ch, CURLOPT_USERAGENT, 'PHP5 Client ver: ' . phpversion());
                if(true === $ms){
                    curl_setopt($ch, CURLOPT_TIMEOUT_MS, $timeout);
                    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, $timeout);
                }else{
                    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
                    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
                }
                $result = curl_exec($ch);
                curl_close($ch);
            } else {
                // 发起请求
                $handle = fopen ( $url, 'r' );
                $result = "";
                if ($handle) {
                    while ( ! feof ( $handle ) ) {
                        $result .= fread ( $handle, 4096 );
                    }
                    fclose ( $handle );
                }
            }
            return $result;
        }
    /**
         * post请求
         * @param $url string 
         * @param $host string
         */
        private function http_post($url, $host = '', $params = array(), $timeout=5, $ms = false){
            if(is_array($params)){
                $postString = http_build_query($params);
            }else{
                $postString = $params;  
            }
    
            if (function_exists('curl_init')) {
                $ch = curl_init();
                curl_setopt($ch, CURLOPT_URL, $url);
                if(!empty($host)){
                    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: ' . $host));
                }
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($ch, CURLOPT_USERAGENT, 'YOUKU.COM PREMIUM API PHP5 Client ver: ' . phpversion());
                if(true === $ms){
                    curl_setopt($ch, CURLOPT_TIMEOUT_MS, $timeout);
                    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, $timeout);
                }else{
                    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
                    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
                }
                $result = curl_exec($ch);
                curl_close($ch);
            } else {
                $context = array(
                    'http' => array(
                        'method' => 'POST',
                        'header' => 'Content-type: application/x-www-form-urlencoded'    . "
    ".
                        'Host: '.$host . "
    ".
                        'User-Agent: PHP5 Client ver: ' . phpversion() . "
    ".
                        'Content-length: ' . strlen($postString),
                        'content' => $postString
                    )
                );
                $contextId = stream_context_create($context);
                $handle = fopen($url, 'r', false, $contextId);
                $result = '';
                if ($handle) {
                    while (!feof($handle)) {
                        $result .= fgets($handle, 4096);
                    }
                    fclose($handle);
                }
            }
    
            return $result; 
        }
       //拨号请求
        function doCurlGetRequest($url, $data = [], $header = [], $timeout = 5){
            if($url == "" || $timeout <= 0){
                return false;
            }
            $url = $url.'?'.http_build_query($data);
            $curl = curl_init((string)$url);
            curl_setopt($curl, CURLOPT_HEADER, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 信任任何证书
            curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
            curl_setopt($curl, CURLOPT_TIMEOUT, (int)$timeout);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //添加自定义的http header
            return curl_exec($curl);
        }
  • 相关阅读:
    机器人
    仙岛求药(一)
    YZM 二分查找
    珠心算测验升级版
    博客正在施工
    【其他】16年12月博客阅读索引^_^
    博客有新家了!
    POJ No.3617【B008】
    POJ No.2386【B007】
    【刷题记录】部分和问题
  • 原文地址:https://www.cnblogs.com/wt645631686/p/9081476.html
Copyright © 2011-2022 走看看