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