上代码


/**
 * CURL请求
 *
 * @param [type] $strUrl        访问地址
 * @param string $strMethod     请求方式
 * @param array $arrData        请求发送的数据
 * @param array $arrHeader      请求时发送的header
 * @param boolean $isJson       是否JSON请求
 * @param boolean $strFilePath  PUT形式上传的文件
 * @param integer $intTimeOut   超时时间
 * @return void
 * @author 一颗大萝北 [email protected]
 */
function curlRequest($strUrl, $strMethod = “GET”, $arrData = array(), $arrHeader = array(), $isJson = false, $strFilePath = false, $intTimeOut = 60)
{
    if ($isJson == true && empty($arrHeader[‘Content-Type’])) $arrHeader[‘Content-Type’] = ‘application/json;charset=UTF-8’; //当为JSON提交时header没有设置类型时补充设置
    if ($isJson == true && empty($arrHeader[‘Content-Length’])) $arrHeader[‘Content-Length’] = strlen(json_encode($arrData, JSON_UNESCAPED_UNICODE)); //当为JSON提交时header没有设置长度时补充设置
    $arrHeaders = [];
    foreach ($arrHeader as $k => $v) $arrHeaders[] = $k . ‘:’ . $v; //拼接header
    $objCh = curl_init();
    curl_setopt($objCh, CURLOPT_SSL_VERIFYPEER, false); //跳过证书检查
    curl_setopt($objCh, CURLOPT_SSL_VERIFYHOST, false);  //从证书中检查SSL加密算法是否存在
    curl_setopt($objCh, CURLOPT_RETURNTRANSFER, true);   //返回字符串,而不直接输出
    curl_setopt($objCh, CURLOPT_HTTPHEADER, $arrHeaders); //设置header
    curl_setopt($objCh, CURLOPT_TIMEOUT, $intTimeOut);      //设置超时时间
    curl_setopt($objCh, CURLOPT_URL, $strUrl);
    $strMethod = strtoupper($strMethod); //统一转为大写
    // if (!empty($arrData) && !$isJson) $objCurlData =  http_build_query($arrData);
    if (!empty($arrData) && $isJson) $arrData =  json_encode($arrData, JSON_UNESCAPED_UNICODE);
    if ($strFilePath !== false && !is_file($strFilePath) && $strMethod != ‘PUT’) return [‘ok’ => false, ‘msg’ => ‘选择的文件不存在或请求方式不是PUT’];
    switch ($strMethod) {
        case ‘PUT’:
            curl_setopt($objCh, CURLOPT_PUT, true);
            if (is_file($strFilePath) && $strFilePath !== false) {
                //存在文件上传
                curl_setopt($objCh, CURLOPT_INFILE, fopen($strFilePath, ‘rb’)); //设置资源句柄
                curl_setopt($objCh, CURLOPT_INFILESIZE, filesize($strFilePath));
            }
            break;
        case ‘POST’:
            curl_setopt($objCh, CURLOPT_POST, true);
            break;
        case ‘GET’:
            curl_setopt($objCh, CURLOPT_CUSTOMREQUEST, $strMethod);
            if (!empty($arrData) && !$isJson) $arrData =  http_build_query($arrData);
            break;
        default:
            curl_setopt($objCh, CURLOPT_CUSTOMREQUEST, $strMethod);
            break;
    }
    curl_setopt($objCh, CURLOPT_POSTFIELDS, $arrData);
    $response = curl_exec($objCh);
    if ($error = curl_error($objCh)) {
        return [‘ok’ => false, ‘msg’ => curl_error($objCh)];
    }
    curl_close($objCh);
    return [‘ok’ => true, ‘msg’ => ‘成功!’, ‘data’ => $response];
}
说点什么
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...