php利用curl封装一个可以发送http请求的函数

Python小叮当 Python小叮当 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

curl相关参数说明如下
官网
菜鸟教程

注释都在代码里面,以便日后重复利用

/**
 * 发起http请求
 * @param string $url 目标url
 * @param string $body 需要发送的数据,json字符串之类的
 * @param string $method 请求方法,get put post delete
 * @param array $headers 请求头
 * @param bool $certPath 证书路径
 * @return void
 */
function http_request($url,$body='',$method='GET', $headers=[],$certPath=false){
    $options = [
        CURLOPT_URL => $url,
        // 将curl_exec()获取的信息以文件流的形式返回,而不是直接输出
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_INFILESIZE => -1,
        // 请求时间
        CURLOPT_TIMEOUT => 60,
        // 请求方法
        CURLOPT_CUSTOMREQUEST => $method,
        // 是否启用证书验证
        CURLOPT_SSL_VERIFYHOST => false,
        // 检查公用名是否存在,并且是否与提供的主机名匹配。 和证书验证一起使用
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_HEADER => true,
    ];

    if( $body != "" ) {
        $options[CURLOPT_POSTFIELDS] = $body;
    }
    // 设置method
    if( $method === "POST" ) {
        $options[CURLOPT_POST] = true;
    } else if(  $method !== "GET" ) {
        $options[ CURLOPT_CUSTOMREQUEST ] = $method;
    }

    if ( count($headers) )
    {
        $dataHeaders = [];
        foreach ($headers as $key => $value)
            $dataHeaders[] = $key . ': ' . $value;

        $options[ CURLOPT_HTTPHEADER ] = $dataHeaders;
    }

    if ( $certPath )
        $options[CURLOPT_CAINFO] = $certPath;

    $result = [];
    $result["error"] = false;
    $result["content"] = null;

    try
    {
        // 初始化一个 curl 会话
        if (!$curl = curl_init())
            throw new Exception('Unable to initialize cURL');

        if (!curl_setopt_array($curl, $options))
            throw new Exception(curl_error($curl));

        $response = curl_exec($curl);
        if(  $response === false ) {
            throw new Exception( curl_error($curl) );
        }

        $result["responseCode"] = curl_getinfo( $curl, CURLINFO_HTTP_CODE );
        $headerSize = curl_getinfo( $curl, CURLINFO_HEADER_SIZE );
        $result["content"] = substr( $response, $headerSize );

        //    prevent PHP from returning false
        if( !$result["content"] )
            $result["content"] = "";

        $result["header"] = substr( $response, 0, $headerSize );

        // 关闭 curl 会话资源
           curl_close($curl);
    }
    catch ( Exception $e )
    {
            $result["error"] = "CURL error: " . $e->getMessage();
    }

    return $result;
}
...全文

相关推荐

php实现的http请求封装示例

主要介绍了php实现的http请求封装,结合实例形式分析了php基于curl的http请求操作功能实现技巧与使用方法,需要的朋友可以参考下

weixin_38683848

PHP CURL HTTP请求类实现

在现代网络编程中,客户端和服务器之间的通信大多依赖于HTTP协议。在PHP的世界里,CURL库提供了一种强大的方式来处理这些交互。PHP CURL库不仅能够发起各种HTTP请求,还能处理HTTPS连接,甚至支持多种协议如 FTP、SMTP 和其他自定义协议。CURL库在PHP中的应用极为广泛,它支持各种HTTP请求方法如GET、POST、PUT、DELETE等,并且可以方便地处理请求头和请求体。

老光私享

PHP中高效HTTP请求工具封装与实战

通过可以设置自定义的HTTP请求头字段。]);说明:适用于需要携带认证信息(如Token)或指定请求类型(如Ajax)的场景;注意格式必须是。在设计HttpTool类时,应遵循单一职责原则,将HTTP请求相关的操作集中管理,同时保持类的结构清晰、职责分明。主要职责包括:初始化cURL会话设置请求参数(URL、方法、请求头、超时等)发起HTTP请求处理响应结果捕获并处理错误因此,类中应包含如下核心方法:方法名描述。

啃老师

PHP利用curl发送HTTP请求的实例代码

主要介绍了PHP利用curl发送HTTP请求的实例,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下

weixin_38724363

http类库:基于php curl库封装的http类库.zip

php-httplib是一个基于php curl库封装的http类库,简单易用的同时兼顾性能及功能,可完美解决您的web请求需求!

weixin_39841856
评论 1
收藏 已收藏
分享
返回顶部