linux curl php程序,PHP编程中使用CURL发送HTTP请求的基本流程

发布时间:2021-09-20 15:52:59

在PHP编程中,有时候需要编程技术人员使用CURL的PHP扩展完成一个HTTP请求的发送,对于这个操作来说,很多初学者都会遇到很多苦难,那么下面就来为大家讲解一下。一般有以下几个步骤:


1. 初始化连接句柄;


2. 设置CURL选项;


3. 执行并获取结果;


4. 释放VURL连接句柄。


下面的程序片段是使用CURL发送HTTP的典型过程



上述代码中使用到了四个函数


? curl_init() 和 curl_close() 分别是初始化CURL连接和关闭CURL连接,都比较简单。


? curl_exec() 执行CURL请求,如果没有错误发生,该函数的返回是对应URL返回的数据,以字符串表示满意;如果发生错误,该函数返回 FALSE。需要注意的是,判断输出是否为FALSE用的是全等号,这是为了区分返回空串和出错的情况。


? CURL函数库里最重要的函数是curl_setopt(),它可以通过设定CURL函数库定义的选项来定制HTTP请求。上述代码片段中使用了三个重要的选项:


1. CURLOPT_URL 指定请求的URL;


2. CURLOPT_RETURNTRANSFER 设置为1表示稍后执行的curl_exec函数的返回是URL的返回字符串,而不是把返回字符串定向到标准输出并返回TRUE;


CURLLOPT_HEADER设置为0表示不返回HTTP头部信息。


获取CURL请求的输出信息


在curl_exec()函数执行之后,可以使用curl_getinfo()函数获取CURL请求输出的相关信息,示例代码如下:



上述代码中curl_getinfo返回的是一个关联数组,包含以下数据:


? url:网络地址。


? content_type:内容编码。


? http_code:HTTP状态码。


? header_size:header的大小。


? request_size:请求的大小。


? filetime:文件创建的时间。


? ssl_verify_result:SSL验证结果。


? redirect_count:跳转计数。


? total_time:总耗时。


? namelookup_time:DNS查询耗时。


? connect_time:等待连接耗时。


? pretransfer_time:传输前准备耗时。


? size_uplpad:上传数据的大小。


? size_download:下载数据的大小。


? speed_download:下载速度。


? speed_upload:上传速度。


? download_content_length:下载内容的长度。


? upload_content_length:上传内容的长度。


? starttransfer_time:开始传输的时间表。


? redirect_time:重定向耗时。


curl_getinfo()函数还有一个可选择参数$opt,通过这个参数可以设置一些常量,对应到上术这个字段,如果设置了第二个参数,那么返回的只有指定的信息。例如设置$opt为CURLINFO_TOTAL_TIME,则curl_getinfo()函数只返回total_time,即总传输消耗的时间,在只需要关注某些传输信息时,设置$opt参数很有意义。


使用CURL发送GET请求


如何使用CURL来发送GET请求,发送GET请求的关键是拼装格式正确的URL。请求地址和GET数据由一个“?”分割,然后GET变量的名称和值用“=”分隔,各个GET名称和值由“&”连接。PHP为我们提供了一个函数专门用来拼装GET请求和数据部分??http_build_query,该函数接受一个关联数组,返回由该关联数据描述的GET请求字符串。使用这个函数,结合CURL发送HTTP请求的一般流程,我们封闭了一个发送GET请求的函数??doCurlGetRequest,具体代码如下:



使用CURL发送POST请求


可以使用CURL提供的选项CURLOPT_POSTFIELDS,设置该选项为POST字符串数据就可以把请求放在正文中。同样我们实现了一个发送POST请求的函数??doCurlPostRequest,代码如下:



好了,现在大家应该清楚如何操作了吧,如果还是存在问题的话可以咨询留言。








相关资源:ARIMA模型-matlab代码

相关文档

  • 平菇的营养价值-平菇的功效与作用
  • 猜猜我是什么?
  • 功血是什么原因
  • 《奥伊达的理想》读书笔记
  • 失恋后悔个性签名男生
  • 2015年1月14日结婚怎么样
  • 【Error】安装VS2012后VS2010工程失败
  • macOS安装docker、添加镜像加速器
  • 班级学风建设自查及整改措施
  • 地震频发减少灾后损失购买地震/巨灾保险须知
  • 阿里云的重大战略调整,“被集成”成核心,发布SaaS加速器助力企业成长 ...
  • 10k+点赞的Spring Boot权限管理系统竟然出了详细教程!爱了!
  • 2017日系洗面奶排行榜
  • 戴尔商务机怎么样查看型号
  • Ubuntu学习笔记 ?? 从入门到入土
  • 走过青花,留在兰亭
  • 科学家发现植物防晒分子新激发态超快能量驰豫机理
  • 【007】IMU数据融合之Mahony算法应用
  • 初一西游记的读后感600字
  • 9月16日什么节日?国际臭氧层珍爱日是几月几日
  • 交通违章网上怎么处理
  • 如何提高自己的领导力
  • ipad怎么把皮套锁屏去了
  • recaro安全座椅怎么样?recaro安全座椅好用吗?
  • 听qq音乐怎样在没有wifi的情况下不消耗流量
  • 哀鸣反义词,近义词和造句
  • 我爱英语 我爱英语 I Like English
  • 阿里面试官:什么是消息队列,为什么用消息队列,用了有什么问题
  • 电脑桌面卡那里了怎么办
  • 宽容的作文700字:宽容的力量
  • 猜你喜欢

  • 基于韩流现象的服装品牌评价体系的研究
  • java.sql.SQLException: Access denied for user 'Administrator'@'localhost'
  • 初中作文指导:让人物活起来——人物描写方法训练ppt
  • 我国高校后勤改革的制度变迁
  • Book3 Unit1 Using language学案
  • 九年级英语下册 Module 5 Rules and suggestions学习方案(无答案) 外研版
  • 写一篇发言稿
  • 人才800字高一作文
  • 台湾金融控股公司发展模式及借鉴
  • Python离线安装future模块
  • 正月十五观花灯作文
  • [精品文表]二次结构安全技术交底表格
  • 大学生就业推荐表自我评价
  • 殡葬领域突出问题专项整治行动工作方案
  • 王艳青推荐练*题:反问、转述句、双重否定句
  • 男性龟头炎一般多久能消
  • 教育最新2017_2018学年高中政治第二单元为人民服务的政府单元检测新人教版必修2
  • 徐闻县旺利经济发展有限公司企业信用报告-天眼查
  • 部编人教版八年级历史上册期末历史线索复*课件共17张PPT
  • 辨识度
  • 消夏晚会主持词结束语
  • 钉钉app怎么设置钉钉号? 钉钉号的设置方法
  • 2017-2023年中国及全球疏散灯行业市场发展战略分析及投资前景专项预测报告(目录)
  • 《蟋蟀的住宅 》的教学随笔
  • 吃什么食物清肺润肺,吃什么食物清肺,吃什么清肺排毒
  • 孕妇梦见来大姨妈什么意思
  • 远方,风雨兼程作文800字
  • 【会计实操经验】浅析财务预算管理在企业中的重要作用
  • 如何听课评课的复*提纲
  • 廉洁教育中的大学生诚信教育探索
  • 烟台诚鑫二手车交易中心有限公司企业信用报告-天眼查
  • 小学体育教学与儿童心理健康
  • 六年级2017届数学下册单元测试题9(沪教版)(数学(上)第一章_数的整除)
  • 文化认同与和谐社会建设
  • 五年级英语Unit4 When is Easter 优质课公开课课件 (2)
  • 2018最新-呼和浩特职业学院毕业论文学术答辩与开题报告课题研究项目汇报【漂亮模版幻灯片PPT】
  • 洪洞县建筑勘探设计室企业信用报告-天眼查
  • 黄昏路上金色的城堡——宁夏灵武横城堡
  • (小学教育)2019年六年级下册品社期末试卷
  • 2018-2019年内蒙古欧亚职业技术学校三年级上册科学模拟复习题无答案(1)
  • 废水中有机污染物高级氧化过程的降解
  • 人教版2019-2020年度九年级上学期期中数学试题A卷(检测)
  • 电脑版