PHP http请求封装使用(POST.GET,PUT,DELETE)

news2025/1/18 19:01:53

封装的 sendRequest() 函数是一个通用的发送请求函数,可以发送 POST、GET、PUT、DELETE 请求。下面对该函数的代码进行具体讲解: 

<?php
function sendRequest($method, $url, $data = null, $contentType = 'multipart/form-data', $headers = array(), $timeout = 30)
{
    if(in_array($contentType,[1,2,3])){
        $contentTypeArr=[1=>"multipart/form-data",2=>"application/json",3=>"application/x-www-form-urlencoded"];
        $contentType=$contentTypeArr[$contentType];
    }
    // 创建一个 cURL 资源
    $curl = curl_init($url);
    // 判断是否为 HTTPS 请求
    if (stripos($url, "https://") !== false) {
        // 设置 SSL 选项
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 不验证证书
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 不验证主机名
        curl_setopt($curl, CURLOPT_SSLVERSION, 1); // 使用 TLSv1 协议
    }
    // 根据请求方法设置 cURL 选项
    switch ($method) {
        case 'POST':
            curl_setopt($curl, CURLOPT_POST, true);
            break;
        case 'GET':
            curl_setopt($curl, CURLOPT_HTTPGET, true);
            break;
        case 'PUT':
            $contentType = 'application/json';
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
            break;
        case 'DELETE':
            $contentType = 'application/json';
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE');
            break;
    }
    // 设置 cURL 选项
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
    // 设置请求头
    $headers[] = 'Content-Type: ' . $contentType;
    if (!empty($headers)) {
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    }
    // 根据编码格式设置请求参数
    if ($data !== null) {
        if ($contentType == 'application/json') {
            $postData = json_encode($data);
        } elseif ($contentType == 'multipart/form-data') {
            $postData = $data;
        } elseif ($contentType == 'application/x-www-form-urlencoded') {
            $postData = http_build_query($data);
        }

        curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
    }
    // 发送请求并获取响应

    $response = curl_exec($curl);
    // 检查是否有错误发生
    if ($response === false) {
        $error = curl_error($curl);
        // 处理错误信息
    } else {
        // 处理响应数据
    }
    // 关闭 cURL 资源
    curl_close($curl);
    // 返回响应数据
    return $response;
}

1、 POST 请求示例

$data = array(
    'field1' => 'value1',
    'field2' => 'value2'
);
$headers = array(
    'Authorization: Bearer token'
);
$url='xxx.com/test.php';
$response = sendRequest('POST', $url, $data, 1, $headers, 60);
var_dump($response);
接收方式
var_dump($_POST);

2、GET 请求示例

$url='xxx.com/test.php?a=1';
$response = sendRequest('GET', $url);
var_dump($response);

接收方式

var_dump($_GET);

3、PUT 请求示例

$data = array(
    'field1' => 'value1',
    'field2' => 'value2'
);
$url='xxx.com/test.php';
$response = sendRequest('PUT', $url, $data);

接收方式

var_dump(json_decode(file_get_contents('php://input'),true));

4、DELETE 请求示例

$data = array(
    'field1' => 'value1',
    'field2' => 'value2'
);
$url='xxx.com/test.php';
$response = sendRequest('DELETE', $url, $data);

接收方式

var_dump(json_decode(file_get_contents('php://input'),true));

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/829231.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无人驾驶实战-第一课(自动驾驶概述)

在七月算法上报了《无人驾驶实战》课程&#xff0c;老师讲的真好。好记性不如烂笔头&#xff0c;记录一下学习内容。 ————————————————————————————————————————— 无人驾驶汽车的定义&#xff1a; 无人驾驶汽车是可载人的移动智能机器…

【ASP.NET MVC】动态与静态网站(3)

一、区别 静态网页&#xff08;站&#xff09; 用户通过浏览器提交访问需求&#xff0c;需求可以是默认首页或者指定的网站中的某个页面&#xff0c;WEB服务器查找对应的网页&#xff0c;通过HTTP协议发送到客户端&#xff0c;完成访问。 特点&#xff1a;每次访问、不同角色…

视频监控综合管理平台EasyCVR修改参数提示database or disk is full是什么原因?

EasyDarwin开源流媒体视频EasyCVR安防监控平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能分析等能力。视频监控综合管理平台EasyCVR具备视频汇聚融合能力&#xff0c;平台基于云边端一体化架构&#xff0c;具有强大…

【MCU学习】GD32F427VG开发

&#xff08;一&#xff09;学习文档和例程 兆易创新GD32 MCU参考资料下载 1.GD232F4xx的Keil芯片支持包 2.标准固件库和示例程序 3.GD32F4xx_固件库使用指南_Rev1.2 4.用户手册&#xff1a;GD32F4xx_User_Manual_Rev2.8_CN 5.数据手册&#xff1a;GD32F427xx_Datasheet_Rev…

通信笔记——最小移频键控MSK

由2FSK→MSK存在以下几点&#xff1a; 1、如何实现已调信号的码元正交&#xff1b;2、如何实现相位连续&#xff0c;不突变。 1、以2FSK一般表示法出发&#xff0c;推导得出两种频率的约束关系 正交条件&#xff1a; 积化和差公式有&#xff1a; 当载波频率比较高&#xff…

类欧几里得算法学习笔记

偶然发现了学长发给我的一个学长的学长也是我的学长的一个数论 p p t ppt ppt&#xff0c;先不着急复习莫反杜教筛&#xff0c;按这个顺序来吧 0.随便说说 前一阵子确实学习状态不是很好&#xff0c;我感觉我个人学习状态也是忽好忽坏的&#xff0c;不过只要在学习状态好的时…

大麦链接源码 大麦一键生成订单截图

8.4最新版源码 更新了大麦链接模版 更新了大麦订单截图一键生成 下载源码&#xff1a;https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3

TM4C123的ROM函数和非ROM函数区别

前言 在开发TM4C123的时候&#xff0c;我看到ROM函数和非ROM函数。例如ROM_FPUEnable()和FPUEnable()函数&#xff0c;这两个就只是前缀不一样。有什么区别和不同&#xff1f; 相同点 ROM函数和非ROM函数的作用起始是一样的&#xff0c;比如上面的例子ROM_FPUEnable()和FPUEnab…

如何有效地扩展数据库服务器以满足日益增长的工作量

在当今以数据为驱动的世界中&#xff0c;企业面临着一个挑战&#xff0c;即在保证应用程序的最佳性能的同时&#xff0c;管理迅速增长的数据量。扩展数据库服务器在满足这些需求方面起着至关重要的作用。本篇博客将探讨各种策略&#xff0c;以有效地扩展数据库服务器&#xff0…

[C++]

C 一.C基础入门1.HelloWorld2.注释3.变量4.常量5.关键字6.命名规则 二.数据类型1.整形2.sizeof关键字3.浮点型4.字符型5.转义字符6.字符串型7.布尔类型8.数据的输入 三.运算符1.算数运算符2.赋值运算符3.比较运算符4.逻辑运算符 一.C基础入门 1.HelloWorld 首先到官网下载并安…

P2824 [HEOI2016/TJOI2016] 排序(线段树)(内附封面)

[HEOI2016/TJOI2016] 排序 题目描述 在 2016 2016 2016 年&#xff0c;佳媛姐姐喜欢上了数字序列。因而她经常研究关于序列的一些奇奇怪怪的问题&#xff0c;现在她在研究一个难题&#xff0c;需要你来帮助她。 这个难题是这样子的&#xff1a;给出一个 1 1 1 到 n n n 的…

关于单测技术选型,聊聊我的思考

对于单测来说&#xff0c;目前常用的单测框架有&#xff1a; JUnitMockitoSpockPowerMockJMockitTestableMock 其中 JUnit 不支持 Mock&#xff0c;因此基本不会只用 JUnit&#xff0c;而是结合其他有 Mock 功能的框架一起使用。从知名度及使用率来说&#xff0c;Mockito 和 …

【基于HBase和ElasticSearch构建大数据实时检索项目】

基于HBase和ElasticSearch构建大数据实时检索项目 一、项目说明二、环境搭建三、编写程序四、测试流程 一、项目说明 利用HBase存储海量数据&#xff0c;解决海量数据存储和实时更新查询的问题&#xff1b;利用ElasticSearch作为HBase索引&#xff0c;加快大数据集中实时查询数…

干就完了

&#xff08;1&#xff09; ENIAC诞生于1946年。但安达信在1954年就拿计算机给通用电气公司算薪&#xff0c;这算计算机最早在工商业界的应用。 其实算薪这个事吧&#xff0c;严格意义来说是人力服务的BPO&#xff0c;只不过为了让这个算薪BPO项目更高效率更高质量更低成本地完…

无人机巢的作用及应用领域解析

无人机巢作为无人机领域的创新设备&#xff0c;不仅可以实现无人机的自主充电和电池交换&#xff0c;还为无人机提供安全便捷的存放空间。为了帮助大家更好地了解无人机巢&#xff0c;本文将着重解析无人机巢的作用和应用领域。 一、无人机巢的作用 无人机巢作为无人机技术的重…

模型优化调参方法介绍(Python代码)

模型算法在机器学习和深度学习中都发挥着自己的作用&#xff0c;但往往训练出来的模型效果不佳或稳定性不强&#xff0c;就需要对模型进行调优。一般来说&#xff0c;会从以下几个角度来优化模型。 1.优化数据维度 在需要对原始需求进行理解、准确定义好坏样本的前提下&#…

MySQL第六七弹,自连接等复杂查询,索引部分知识

一、&#x1f49b; 自连接&#xff1a;自己和自己笛卡尔积&#xff08;奇淫巧技&#xff0c;特殊场景很牛逼&#xff09; SQL&#xff1a;编写条件都是列和列之间的比较&#xff0c;但是SQL无法进行&#xff0c;行与行之间的比较。 如&#xff1a;显示所有java比计算机原理高的…

中电金信杜啸争:逐“数”兴业,智胜未来

在数字化转型大潮中&#xff0c;数据要素市场未来如何发展&#xff1f;作为天然具有大量数据应用场景和需求的金融行业&#xff0c;能否逐“数”兴业&#xff0c;实现“换道超车”&#xff1f; 本期分享由中电金信商业分析事业部总经理&#xff0c;中电金信数据研发委员会主席…

Cpp8 — 二叉搜索树

二叉搜索树&#xff08;搜索二叉树、二叉排序树&#xff09; 二叉搜索树又称二叉排序树&#xff0c;它要么是一棵空树&#xff0c;要么是具有以下性质的二叉树&#xff1a; 1.若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值 2.若它的右子树不为空&…

刷题笔记 day5

力扣 202 快乐数 首先来分析什么样的数是快乐数&#xff0c; 解题思路&#xff1a; 1&#xff09;定义快慢指针 &#xff1b; 2&#xff09;快指针走两步&#xff0c;慢指针走一步 &#xff1b;3&#xff09;两个指针相遇时判断相遇的数值是否为1。 怎样处理 取各分位数的平…