Cml\Http\Request::curl PHP Method

curl() public static method

发起curl请求
public static curl ( string $url, array $parameter = [], array $header = [], string $type = 'json', integer $timeout = 10 ) : boolean | mixed
$url string 要请求的url
$parameter array 请求参数
$header array header头信息
$type string 请求的数据类型 json/post/file/get
$timeout integer 请求的超时时间默认10s
return boolean | mixed
    public static function curl($url, $parameter = [], $header = [], $type = 'json', $timeout = 10)
    {
        $ssl = substr($url, 0, 8) == "https://" ? true : false;
        $ch = curl_init();
        if ($ssl) {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            //信任任何证书
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
            //检查证书中是否设置域名
        }
        if ($type == 'json') {
            $queryStr = json_encode($parameter, JSON_UNESCAPED_UNICODE);
            //$queryStr = str_replace(['\/','[]'], ['/','{}'], $queryStr);//兼容
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $queryStr);
        } else {
            if ($type == 'post') {
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($parameter));
            } else {
                if ($type == 'file') {
                    $isOld = substr($parameter['file'], 0, 1) == '@';
                    if (function_exists('curl_file_create')) {
                        $parameter['file'] = curl_file_create($isOld ? substr($parameter['file'], 1) : $parameter['file'], '');
                    } else {
                        $isOld || ($parameter['file'] = '@' . $parameter['file']);
                    }
                    curl_setopt($ch, CURLOPT_POST, 1);
                    curl_setopt($ch, CURLOPT_POSTFIELDS, $parameter);
                } else {
                    $queryStr = '';
                    if (is_array($queryStr)) {
                        foreach ($parameter as $key => $val) {
                            $queryStr .= $key . '=' . $val . '&';
                        }
                        $queryStr = substr($queryStr, 0, -1);
                        $url .= '?' . $queryStr;
                    }
                }
            }
        }
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        if (!empty($header)) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        }
        $ret = curl_exec($ch);
        $error = curl_error($ch);
        curl_close($ch);
        if ('' === $ret || !empty($error)) {
            return false;
        } else {
            return $ret;
        }
    }