php-curl

作者: 若初_终点 | 来源:发表于2020-04-04 10:50 被阅读0次
    /**
         * CURL请求
         * @param string $url 请求url地址
         * @param string $method 请求方法 get post
         * @param array null $postFields post数据数组
         * @param array $headers 请求header信息
         * @param bool|false $debug  调试开启 默认false
         * @return mixed
         */
        function httpRequest($url, $method="GET", $postFields = null, $headers = array(), $debug = false) {
            $method = strtoupper($method);
            $curl = curl_init();//初始化一个cURL会话
            //Curl settings
            curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);//强制使用 HTTP/1.0
            curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");//在HTTP请求中包含一个"User-Agent: "头的字符串。
            curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 60); //在发起连接前等待的时间,如果设置为0,则无限等待
            curl_setopt($curl, CURLOPT_TIMEOUT, 7); //设置cURL允许执行的最长秒数
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
            switch ($method) {
                case "POST":
                    curl_setopt($curl, CURLOPT_POST, true);//设置访问方式为POST
                    if (!empty($postFields)) {
                        $tmpDataStr = is_array($postFields) ? http_build_query($postFields) : $postFields;
                        curl_setopt($curl, CURLOPT_POSTFIELDS, $tmpDataStr);//POST的数据数组
                    }
                    break;
                default:
                    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);//设置访问方式为GET
                    break;
            }
            $ssl = preg_match('/^https:\/\//i',$url) ? TRUE : FALSE;
            curl_setopt($curl, CURLOPT_URL, $url);//需要获取的URL地址,也可以在curl_init()函数中设置
            if($ssl){
                curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
                curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在
            }
            //curl_setopt($ci, CURLOPT_HEADER, true); //启用时会将头文件的信息作为数据流输出
            curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);//启用时会将服务器服务器返回的"Location: "放在header中递归的返回给服务器
            curl_setopt($curl, CURLOPT_MAXREDIRS, 2);/*指定最多的HTTP重定向的数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的*/
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);//设置HTTP头字段的数组
            curl_setopt($curl, CURLINFO_HEADER_OUT, true);//启用时追踪句柄的请求字符串。
            //curl_setopt($ci, CURLOPT_COOKIE, $Cookiestr); //设定HTTP请求中"Cookie: "部分的内容。多个cookie用分号分隔,分号后带一个空格
            //Curl settings 结束
            $response = curl_exec($curl);//执行一个cURL会话
            $requestInfo = curl_getinfo($curl);//获取一个cURL连接资源句柄的信息
            $http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);//最后一个收到的HTTP代码
            if ($debug) {
                echo "=====post data======\r\n";
                var_dump($postFields);
                echo "=====info===== \r\n";
                print_r($requestInfo);
                echo "=====response=====\r\n";
                print_r($response);
            }
            curl_close($curl);//关闭一个cURL会话
            return $response;
            //return array($http_code, $response,$requestinfo);
        }
    
    //访问外网
    public function http_weixinget($url)
    {
        //$content = file_get_contents($url);
        //return $content;
        $curl = curl_init($url);//获取网络资源
        if (strripos($url, 'https://') !== false) {
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        }
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $content = curl_exec($curl);
        $status = curl_getinfo($curl);
        curl_close($curl);
        if ($status['http_code'] == 200) {
            return $content;
            exit();
        } else {
            return false;
            exit();
        }
    }
    
    //访问外网
    public function http_weixinpost($url, $data)
    {
        $curl = curl_init($url);//获取网络资源
        if (strripos($url, 'https://') !== false) {
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        }
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        $content = curl_exec($curl);
        $status = curl_getinfo($curl);
        curl_close($curl);
        if ($status['http_code'] == 200) {
            return $content;
            exit();
        } else {
            return false;
            exit();
        }
    }
        
        
    ------------------------------------------------------------------------------------------------------------------    
    

    相关文章

      网友评论

          本文标题:php-curl

          本文链接:https://www.haomeiwen.com/subject/kppdphtx.html