发布时间:2026/6/16 16:14:10
PHPcURL与HTTP客户端封装
PHP cURL与HTTP客户端封装cURL是PHP发送HTTP请求的标准方式。配合第三方API、抓取网页、上传文件都很方便。今天说说cURL的各种用法。最基本的GET请求。phpfunction httpGet(string $url): array{$ch curl_init($url);curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER true,CURLOPT_TIMEOUT 30,CURLOPT_FOLLOWLOCATION true,CURLOPT_SSL_VERIFYPEER true,]);$body curl_exec($ch);$httpCode curl_getinfo($ch, CURLINFO_HTTP_CODE);$error curl_error($ch);curl_close($ch);if ($error) throw new RuntimeException(请求失败: $error);return [body $body, http_code $httpCode];}?封装HTTP客户端方便复用。phpclass HttpClient{private array $headers [];private int $timeout 30;public function setHeader(string $name, string $value): void{$this-headers[$name] $value;}public function get(string $url, array $query []): array{if (!empty($query)) {$url . (strpos($url, ?) false ? ? : ) . http_build_query($query);}return $this-request(GET, $url);}public function post(string $url, mixed $data []): array{return $this-request(POST, $url, $data);}private function request(string $method, string $url, mixed $data null): array{$ch curl_init($url);$options [CURLOPT_RETURNTRANSFER true,CURLOPT_TIMEOUT $this-timeout,CURLOPT_FOLLOWLOCATION true,];if ($method POST) {$options[CURLOPT_POST] true;if (is_array($data)) {$options[CURLOPT_POSTFIELDS] http_build_query($data);} else {$options[CURLOPT_POSTFIELDS] $data;$this-headers[Content-Type] application/json;}}if (!empty($this-headers)) {$headerLines [];foreach ($this-headers as $name $value) {$headerLines[] $name: $value;}$options[CURLOPT_HTTPHEADER] $headerLines;}curl_setopt_array($ch, $options);$body curl_exec($ch);$httpCode curl_getinfo($ch, CURLINFO_HTTP_CODE);$error curl_error($ch);curl_close($ch);return [body $body, http_code $httpCode, error $error];}}$client new HttpClient();$client-setHeader(Authorization, Bearer token123);$client-setHeader(Accept, application/json);$result $client-get(https://api.example.com/users, [page 1]);echo 状态码: {$result[http_code]}\n;?批量请求用curl_multi同时发送提高效率。phpfunction batchRequest(array $urls): array{$multi curl_multi_init();$handles [];foreach ($urls as $id $url) {$ch curl_init($url);curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER true, CURLOPT_TIMEOUT 10]);curl_multi_add_handle($multi, $ch);$handles[$id] $ch;}$running null;do { curl_multi_exec($multi, $running); curl_multi_select($multi); } while ($running 0);$results [];foreach ($handles as $id $ch) {$results[$id] [body curl_multi_getcontent($ch),http_code curl_getinfo($ch, CURLINFO_HTTP_CODE),];curl_multi_remove_handle($multi, $ch);curl_close($ch);}curl_multi_close($multi);return $results;}?文件上传用curl_file_create。phpfunction uploadFile(string $url, string $filePath, string $fieldName file): array{$ch curl_init($url);curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER true,CURLOPT_POST true,CURLOPT_POSTFIELDS [$fieldName curl_file_create($filePath)],CURLOPT_TIMEOUT 60,]);$body curl_exec($ch);$httpCode curl_getinfo($ch, CURLINFO_HTTP_CODE);curl_close($ch);return [body $body, http_code $httpCode];}?cURL在PHP中很常用对接第三方API、抓取网页、上传下载文件都离不开。用好cURL能让你在处理HTTP请求时事半功倍。

相关新闻

从零到上线:一份完整的Google Play结算服务账号配置清单(含P12密钥处理与财务权限设置)
2026/6/12 14:25:52

从零到上线:一份完整的Google Play结算服务账号配置清单(含P12密钥处理与财务权限设置)

从零到上线:Google Play结算服务全流程配置指南在移动应用商业化过程中,支付系统的稳定性和可靠性直接影响用户体验和收入转化。作为全球最大的应用分发平台之一,Google Play提供了完善的结算服务体系,但配置过程中的技术细节和权…

阅读更多
告别漂移!STM32驱动XPT2046电阻屏的滤波与校准算法实战
2026/6/12 9:50:05

告别漂移!STM32驱动XPT2046电阻屏的滤波与校准算法实战

STM32实战:XPT2046电阻屏高精度滤波与校准算法解析电阻触摸屏在嵌入式HMI领域仍占据重要地位,尤其在工业控制、医疗设备等需要稳定触控的场景。XPT2046作为经典触摸控制芯片,其实际应用中最大的挑战莫过于坐标漂移问题——当你反复点击同一位…

阅读更多
你的PCB板还在‘乱接地’吗?深入聊聊高频/低频电路下的接地策略选择
2026/6/15 9:59:39

你的PCB板还在‘乱接地’吗?深入聊聊高频/低频电路下的接地策略选择

高频与低频电路中的接地艺术:从噪声抑制到系统稳定在智能硬件和射频模块的设计中,接地策略的选择往往决定了整个系统的电磁兼容性和信号完整性。我曾亲眼见证过一个本应高精度采集数据的物联网终端,因为接地不当导致ADC读数波动超过30%&#…

阅读更多
辉芒微FMD MCU开发避坑指南:从CMIDE工程配置到EEPROM写入的常见错误
2026/6/16 15:58:22

辉芒微FMD MCU开发避坑指南:从CMIDE工程配置到EEPROM写入的常见错误

辉芒微FMD MCU实战避坑手册:从工程配置到EEPROM写入的深度解析1. CMIDE工程配置的隐藏陷阱刚接触FMD MCU的开发者往往会在CMIDE环境配置阶段遭遇各种"幽灵问题"。最常见的是新建工程时出现的链接警告,这通常源于两个容易被忽视的细节&#xff…

阅读更多
OpenCascade.js:在浏览器中实现专业级CAD建模的终极指南
2026/6/16 15:58:22

OpenCascade.js:在浏览器中实现专业级CAD建模的终极指南

OpenCascade.js:在浏览器中实现专业级CAD建模的终极指南 【免费下载链接】opencascade.js Port of the OpenCascade CAD library to JavaScript and WebAssembly via Emscripten. 项目地址: https://gitcode.com/gh_mirrors/op/opencascade.js OpenCascade.j…

阅读更多
避坑指南:解决LLFF格式转换中‘ERROR: the correct camera poses for current points cannot be accessed’报错
2026/6/16 15:58:22

避坑指南:解决LLFF格式转换中‘ERROR: the correct camera poses for current points cannot be accessed’报错

深度解析LLFF格式转换中的相机位姿匹配错误与实战修复方案当你在NeRF项目中将COLMAP输出的稀疏重建结果转换为LLFF格式时,是否遇到过这个令人抓狂的报错?ERROR: the correct camera poses for current points cannot be accessed。这个看似简单的错误信息…

阅读更多
Mythos模型:自动化漏洞挖掘与利用的能力跃迁
2026/6/16 15:58:22

Mythos模型:自动化漏洞挖掘与利用的能力跃迁

1. 这不是一次普通模型发布:它重新定义了“能力跃迁”的标尺我做AI基础设施和安全工具链搭建快八年了,从早期用TensorFlow手写梯度裁剪,到后来在Kubernetes上调度千卡集群跑RLHF,见过太多“SOTA”“突破性进展”“行业里程碑”的新…

阅读更多
Python爬虫课程设计:从Requests到Scrapy的工程化实战指南
2026/6/16 15:58:22

Python爬虫课程设计:从Requests到Scrapy的工程化实战指南

1. 项目概述:从零到一,设计一门能落地的爬虫课程 最近几年,爬虫技术从一个相对小众的开发技能,变成了数据分析、市场研究、甚至产品运营岗位的“标配”能力。无论是想抓取电商平台的商品价格做比价,还是想分析社交媒体…

阅读更多
【收藏备用|2026新版】大模型零基础5步学习路线,小白/程序员高效入行高薪赛道
2026/6/16 14:58:21

【收藏备用|2026新版】大模型零基础5步学习路线,小白/程序员高效入行高薪赛道

本文针对2026年大模型学习的高频疑问,整理出一套零基础可落地、对标企业招聘标准的5步系统化学习路线,精准匹配当下大厂岗位需求,涵盖必备技能深耕、核心技术攻坚、企业级项目实战、面试就业冲刺全流程。专为零基础小白、转行程序员打造&…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/14 0:57:30

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/14 0:57:30

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/16 0:39:53

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
2026 AI简历编辑平台深度测评与使用教程:ATS扫描、JD匹配、多版本投递怎么选?(首推 OfferGoose)
2026/6/16 0:57:58

2026 AI简历编辑平台深度测评与使用教程:ATS扫描、JD匹配、多版本投递怎么选?(首推 OfferGoose)

(先给结论,节省时间) 只想最快把简历“拉到及格线更贴JD”:优先从 鹅来面 开始——先做简历评分与岗位匹配度,再按建议改一版可投递稿。投递量很大、需要职位管理:偏向 Teal(职位追踪 多份简历…

阅读更多
Java毕业设计-面向学生竞赛的团队组建与信息管控系统设计 SpringBoot 架构下高校竞赛团队管理系统的设计与实践(源码+LW+部署文档+全bao+远程调试+代码讲解等)
2026/6/16 0:57:58

Java毕业设计-面向学生竞赛的团队组建与信息管控系统设计 SpringBoot 架构下高校竞赛团队管理系统的设计与实践(源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

阅读更多
Windows内存清理终极指南:Mem Reduct让你的电脑告别卡顿的简单方法
2026/6/16 0:57:58

Windows内存清理终极指南:Mem Reduct让你的电脑告别卡顿的简单方法

Windows内存清理终极指南:Mem Reduct让你的电脑告别卡顿的简单方法 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memre…

阅读更多
GIT修改用户名
2026/6/16 5:55:51

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/15 2:21:34

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/15 21:13:35

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多