PHP执行一个http请求

时间:2022-07-23
本文章向大家介绍PHP执行一个http请求,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
<?php
/**
 * 执行一个 HTTP 请求
 *
 * @param int $zone 通知的区
 * @param string $php 执行请求的php文件
 * @param mixed $Params 表单参数
 * @param string $Method 请求方法 post / get
 * @return array 结果数组
 */
function sendSGHttp($Url, $Params, $timeout = 3, $Method = 'get')
{
    if (null == $Url) return null;
    $en_url = $Url . "?" . urldecode(urlencode("$Params"));

    $Curl = curl_init();//初始化curl

    if ('get' == $Method) {//以GET方式发送请求
//curl_setopt($Curl, CURLOPT_URL, "$Url?$Params");
        curl_setopt($Curl, CURLOPT_URL, $en_url);
    } else {//以POST方式发送请求
        curl_setopt($Curl, CURLOPT_URL, $Url);
        curl_setopt($Curl, CURLOPT_POST, 1);//post提交方式
        curl_setopt($Curl, CURLOPT_POSTFIELDS, $Params);//设置传送的参数
    }

    curl_setopt($Curl, CURLOPT_HEADER, false);//设置header
    curl_setopt($Curl, CURLOPT_RETURNTRANSFER, true);//要求结果为字符串且输出到屏幕上
    curl_setopt($Curl, CURLOPT_CONNECTTIMEOUT, $timeout);//设置等待时间

    $Res = curl_exec($Curl);//运行curl
    $Err = curl_error($Curl);

    if (false === $Res || !empty($Err)) {
        $Errno = curl_errno($Curl);
        $Info = curl_getinfo($Curl);
        curl_close($Curl);

        return array(
            'result' => false,
            'errno' => $Errno,
            'msg' => $Err,
            'info' => $Info,
        );
    }
    curl_close($Curl);//关闭curl
    return array(
        'result' => true,
        'msg' => $Res,
    );
}