curl请求

/**
 * @param string $url 请求地址
 * @param array|string $params 请求参数
 * @param string $method 请求方法
 * @param array $header 请求头
 * @param bool $multi post 数据是否进行url encode
 * @param bool $httpCode 是否返回http code
 * @return mixed
 * @throws Exception
 */
function curlHttp($url, $params, $method = 'GET', $header = [], $multi = false, $httpCode = false)
{
    $opts = [
        CURLOPT_TIMEOUT        => 10,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_SSL_VERIFYPEER => false, //不做证书校验,部署在linux环境下改为true
        CURLOPT_HTTPHEADER     => $header
    ];

    //根据请求类型设置特定参数
    switch(strtoupper($method)) {
        case 'GET':
            if(!empty($params)){
                $url .= '?' . http_build_query($params);
            }
            $opts[CURLOPT_URL] = $url;
            break;
        case 'POST':  //判断是否传输文件
            $params = $multi ? $params : http_build_query($params);
            $opts[CURLOPT_URL] = $url;
            $opts[CURLOPT_POST] = 1;
            $opts[CURLOPT_POSTFIELDS] = $params;
            break;
        default:
            throw new Exception('不支持的请求方式!');
    }
    /* 初始化并执行curl请求 */
    $ch = curl_init();

    curl_setopt_array($ch, $opts);

    $data  = curl_exec($ch);
    $httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE); //HTTPSTAT码

    if($errorCode = curl_errno($ch)){
        $data = json_encode(['code' => 1,'msg' => curl_error($ch)]);
    }
    curl_close($ch);

    if($httpCode){
        $result = [
            'data' => $data,
            'httpCode' => $httpStatus
        ];
        return $result;
    }

    return $data;
}


原文地址:https://www.cnblogs.com/yangjiayu/p/11157506.html