【PHP】CURL请求第三方API接口

当我们需要调用第三方接口时,就需要使用CURL,通过CURL操作去请求第三方API接口,有的是通过POST方式,有的是通过GET方式,下面介绍一个通用的使用CURL调用API接口的方法。

一、CURL操作

共两个方法,分别是CURL操作、JSON转数组

 CURL操作:传入需要的参数,返回API接口的返回值

JSON转数组:一般接口返回的类型是json格式,为方便使用需要将json转换成数组格式

/*** @describe CURL操作,支持POST和GET两种请求方式* @param $url:API接口请求地址,$param:请求参数,$ispost:请求方式 post=1/get=2* @return array  接口返回结果集*/
public function freeApiCurl($url,$params=false,$ispost=0){$ch = curl_init();curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );curl_setopt( $ch, CURLOPT_USERAGENT , 'free-api' );curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );curl_setopt( $ch, CURLOPT_TIMEOUT , 60);curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );if( $ispost ){curl_setopt( $ch , CURLOPT_POST , true );curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );curl_setopt( $ch , CURLOPT_URL , $url );}else{if($params){curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );}else{curl_setopt( $ch , CURLOPT_URL , $url);}}$response = curl_exec( $ch );if ($response === FALSE) {return false;}curl_close( $ch );return $response;
}/*** 将JSON内容转为数组,并返回*/
public function returnArray($content){return json_decode($content,true);
}

二、调用示例

$key = 'xxxxxx';
$apiUrl = 'https://restapi.amap.com/v3/ip';
$params = ["key" => $key,"ip" => $ip,];
$params = http_build_query($params);    //系统函数,组装参数,形如key=xxxxxxx&ip=123.6.49.12////////// GET方式请求 ////////////
$result = $this->returnArray($this->freeApiCurl($apiUrl,$params));////////// POST方式请求 ////////////
$result = $this->returnArray($this->freeApiCurl($apiUrl,$params,1));

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

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

相关文章

对于考研数学的理解

文章目录高等数学总结补充说明1. 微分方程与无穷级数的特殊性2. 隐藏的逻辑链条3. 向量代数的桥梁作用核心框架为什么这样设计?结论线性代数核心逻辑框架各讲之间的本质联系1. 行列式 → 矩阵2. 矩阵 → 向量组3. 矩阵 向量组 → 线性方程组4. 矩阵 → 特征值与特征…

基于 Hadoop 生态圈的数据仓库实践 —— OLAP 与数据可视化(四)

目录 四、数据可视化与 Hue 简介 1. 数据可视化简介 (1)数据可视化的重要性 (2)数据可视化的用途 (3)实施数据可视化需要考虑的问题 (4)几种主要的数据可视化工具 2. Hue 简介…

HarmonyOS 开发:基于 ArkUI 实现复杂表单验证的最佳实践

摘要 在现代应用开发中,表单是最常见的交互方式之一。不管是用户注册、信息录入,还是登录验证,表单的可靠性直接影响用户体验。而在鸿蒙 ArkUI 开发中,虽然表单结构清晰,但要实现 复杂验证(比如&#xff1a…

高效游戏状态管理:使用双模式位运算与数学运算

在游戏开发中,状态管理是一个核心问题。无论是任务系统、成就系统还是玩家进度跟踪,我们都需要高效地存储和查询大量状态。本文将深入分析一个创新的游戏状态管理工具类 GameStateUtil,它巧妙结合了位运算和数学运算两种模式,在存…

linux-process-control

Linux进程控制 1. 进程终止 1.1. 进程终止的本质是回收资源 1.1 释放资源 内存资源: 释放进程的地址空间(mm_struct),包括代码段、数据段、堆、栈等,通过写时复制(CoW)共享的页会减少引用计数&a…

Autoswagger:揭露隐藏 API 授权缺陷的开源工具

Autoswagger 是一款免费的开源工具,用于扫描 OpenAPI 文档中列出的 API,查找授权漏洞。 即使在拥有成熟安全团队的大型企业中,这类漏洞仍然很常见,而且尤其危险,因为即使技术水平不高的人也能利用它们。 Autoswagger…

Golang 语言 Channel 的使用方式

一、无缓存 channel无缓冲channel 可用于两个goroutine 之间 传递信号,比如以下示例:顺序打印1 至 100 的奇数和偶数:import ("fmt""time" )func main() {block : make(chan struct{})go odd(block)go even(block)time.S…

Element Plus常见基础组件(一)

基础组件 Button 按钮 一、基础用法 <el-button>默认按钮</el-button> <el-button type"primary">主要按钮</el-button>二、按钮类型 (type) 类型说明示例代码default默认按钮<el-button>默认</el-button>primary主要按钮&a…

sdxl量化加速笔记

文章目录一、量化加速sdxl模型1&#xff09;涉及模型2&#xff09;环境安装3&#xff09;转换模型safetensor to pytorch文件4&#xff09;tensorRT的环境准备&#xff08;1&#xff09;下载tensorRT 10.10&#xff08;2&#xff09;下载cuda一、量化加速sdxl模型 1&#xff0…

西门子 G120 变频器全解析:从认知到参数设置

在工业自动化领域&#xff0c;变频器作为电机驱动的核心设备&#xff0c;其稳定运行与精准控制直接影响生产效率。西门子 G120 变频器凭借可靠性能与灵活配置&#xff0c;成为众多工业场景的优选。本文将从基础认知、操作面板到参数设置&#xff0c;全方位带你掌握 G120 变频器…

【自动化运维神器Ansible】YAML支持的数据类型详解:构建高效Playbook的基石

目录 1 YAML数据类型概述 1.1 为什么数据类型很重要&#xff1f; 1.2 YAML数据类型分类 2 标量类型&#xff08;Scalars&#xff09; 2.1 字符串&#xff08;String&#xff09; 2.2 布尔值&#xff08;Boolean&#xff09; 2.3 数值&#xff08;Numbers&#xff09; 2…

基于岗位需求的康养休闲旅游服务实训室建设方案

一、康养休闲旅游服务实训室建设方案建设需求分析康养休闲旅游服务行业的快速发展对技能人才提出了精准化、场景化的能力要求&#xff0c;康养休闲旅游服务实训室建设方案需紧密对接健康咨询、接待服务、康乐服务等核心岗位群的实际需求。从岗位技能来看&#xff0c;健康咨询岗…

MES 与工业物联网(IIoT)的化学反应:为何是智能工厂的 “神经中枢”?

从“被动救火”到“主动预警”的工厂革命想象一下&#xff0c;当你正在家中熟睡时&#xff0c;智能手环突然震动&#xff0c;提醒你心率异常&#xff1b;早上出门前&#xff0c;手机 APP 告诉你爱车的某个零件即将达到磨损极限&#xff0c;建议及时更换。这些日常生活中的智能预…

工作好用小工具积累

1、内部环境太多&#xff0c;网站导航git地址&#xff1a;https://github.com/hslr-s/sun-panel/releases gitee地址&#xff1a;https://gitee.com/luofei1284999247/sun-panel

智能Agent场景实战指南 Day 26:Agent评估与性能优化

【智能Agent场景实战指南 Day 26】Agent评估与性能优化 开篇 欢迎来到"智能Agent场景实战指南"系列的第26天&#xff01;今天我们将深入探讨智能Agent的评估方法与性能优化技术。构建高效、可靠的智能Agent系统需要完善的评估体系和优化策略&#xff0c;本文将系统…

机器学习——下采样(UnderSampling),解决类别不平衡问题,案例:逻辑回归 信用卡欺诈检测

过采样&#xff1a; 机器学习——过采样&#xff08;OverSampling&#xff09;&#xff0c;解决类别不平衡问题&#xff0c;案例&#xff1a;逻辑回归 信用卡欺诈检测-CSDN博客 &#xff08;完整代码在底部&#xff09; 使用下采样解决类别不平衡问题 —— 以信用卡欺诈识别为…

Qt 槽函数被执行多次,并且使用Qt::UniqueConnection无效【已解决】

Qt 槽函数被执行多次&#xff0c;并且使用Qt::UniqueConnection无效引言一、问题描述二、解决方案三、深入了解信号和槽绑定机制引言 之前刚遇到 - 信号和槽正常连接返回true&#xff0c;但发送信号后槽函数无响应问题&#xff0c;现在又遇到槽函数执行多次&#xff0c;使用Qt…

Autosar Nm-网管报文PNC停发后无法休眠问题排查

文章目录前言Autosar CanNm标准中的相关参数CanNmAllNmMessagesKeepAwakePN过滤功能CanNm_ConfirmPnAvailability问题描述问题原因排查解决方案扩展总结前言 Autosar Nm中针对于支持PN功能的收发器&#xff0c;要求PNC停发后允许进入休眠模式&#xff0c;开发过程中遇到PNC停发…

RK3568下的进程间通信:基于UDP的mash网络节点通信

基于UDP的mash网络节点通信系统实现: 最近的项目中需要实现一个功能,类似mash网络的功能,比如 类似下图中的多个节点之间,相互之间通信, 节点A自身的通信列表中,只有B和C,所以A发出的消息给B和C,依次类推,A发送的消息所有节点都能收到,同理,其他节点比如K节点发送的…

Effective C++ 条款17:以独立语句将newed对象置入智能指针

Effective C 条款17&#xff1a;以独立语句将newed对象置入智能指针核心思想&#xff1a;使用智能指针管理动态分配的对象时&#xff0c;必须确保new操作与智能指针构造在同一独立语句中完成&#xff0c;避免编译器优化顺序导致的内存泄漏。 ⚠️ 1. 跨语句初始化的危险性 资源…