使用CURL发送请求的基本流程

使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤:
1.初始化连接句柄;
2.设置CURL选项;
3.执行并获取结果;
4.释放VURL连接句柄。
下面的程序片段是使用CURL发送HTTP的典型过程
// 1. 初始化
$ch = curl_init();
// 2. 设置选项,包括URL
curl_setopt($ch,CURLOPT_URL,"http://www.devdo.net");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HEADER,0);
// 3. 执行并获取HTML文档内容
$output = curl_exec($ch);
if($output === FALSE ){
echo "CURL Error:".curl_error($ch);
}
// 4. 释放curl句柄
curl_close($ch);
上述代码中使用到了四个函数
①CURLOPT_URL 指定请求的URL;
②CURLOPT_RETURNTRANSFER 设置为1表示稍后执行的curl_exec函数的返回是URL的返回字符串,而不是把返回字符串定向到标准输出并返回TRUE;
③CURLLOPT_HEADER设置为0表示不返回HTTP头部信息。
CURL的选项还有很多,可以到PHP的官方网站(http://www.php.net/manual/en/function.curl-setopt.php)上查看CURL支持的所有选项列表。
获取CURL请求的输出信息
在curl_exec()函数执行之后,可以使用curl_getinfo()函数获取CURL请求输出的相关信息,示例代码如下:
curl_exec($ch); $info = curl_getinfo($sh); echo ' 获取 '.$info['url'].'耗时'.$info['total_time'].'秒';
上述代码中curl_getinfo返回的是一个关联数组,包含以下数据:
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,具体代码如下:
/**
*@desc 封闭curl的调用接口,get的请求方式。
*/
function doCurlGetRequest($url,$data,$timeout = 5){
if($curl == "" || $timeout <= 0){
return false;
}
$url = $url.'?'.http_bulid_query($data);
$con = curl_init((string)$url);
curl_setopt($con, CURLOPT_HEADER, false);
curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
return curl_exec($con);
}
这个函数把使用http_build_query 拼装好的带GET参数的URL传给curl_init函数,然后使用CURL发送HTTP请求。
使用CURL发送POST请求
可以使用CURL提供的选项CURLOPT_POSTFIELDS,设置该选项为POST字符串数据就可以把请求放在正文中。同样我们实现了一个发送POST请求的函数——doCurlPostRequest,代码如下:
/**
** @desc 封装 curl 的调用接口,post的请求方式
**/
function doCurlPostRequest($url,$requestString,$timeout = 5){
if($url == '' || $requestString == '' || $timeout <=0){
return false;
}
$con = curl_init((string)$url);
curl_setopt($con, CURLOPT_HEADER, false);
curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
curl_setopt($con, CURLOPT_POST,true);
curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
curl_setopt($con, CURLOPT_TIMEOUT,(int)$timeout);
return curl_exec($con);
}
上面代码中除了设置CURLOPT_POSTFIELDS外,我们还设置了CURL_POST为true,标识这个请求是一个POST请求。在POST请求中也是可以传输GET数据的,只需要在URL中拼装GET请求数据即可。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# php
# curl发送get请求
# curl命令发送post请求
# curl发送post请求
# PHP使用curl函数发送Post请求的注意事项
# PHP如何使用cURL实现Get和Post请求
# php curl模拟post请求小实例
# php curl发起get与post网络请求案例详解
# 浅谈PHP模拟发送POST请求之curl基本使用
# PHP中curl三种Post请求数据的方式小结
# 的是
# 句柄
# 可以使用
# 上传
# 设置为
# 是一个
# 这是
# 放在
# 最重要
# 很有
# 只需
# 要在
# 下载速度
# 第二个
# 如果没有
# 还有一个
# 相关信息
# 它可以
# 只需要
# 跳转
相关文章:
Swift开发中switch语句值绑定模式
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
如何用美橙互联一键搭建多站合一网站?
如何用景安虚拟主机手机版绑定域名建站?
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
建站之星后台密码遗忘或太弱?如何重置与强化?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
建站主机系统SEO优化与智能配置核心关键词操作指南
教学论文网站制作软件有哪些,写论文用什么软件
?
如何基于云服务器快速搭建网站及云盘系统?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
Python如何创建带属性的XML节点
如何在腾讯云服务器上快速搭建个人网站?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
建站之星安装提示数据库无法连接如何解决?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
宁波自助建站系统如何快速打造专业企业网站?
建站之星如何快速生成多端适配网站?
制作宣传网站的软件,小红书可以宣传网站吗?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
如何在局域网内绑定自建网站域名?
建站org新手必看:2024最新搭建流程与模板选择技巧
建站主机解析:虚拟主机配置与服务器选择指南
如何通过西部建站助手安装IIS服务器?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
Python lxml的etree和ElementTree有什么区别
设计网站制作公司有哪些,制作网页教程?
如何制作算命网站,怎么注册算命网站?
做企业网站制作流程,企业网站制作基本流程有哪些?
制作门户网站的参考文献在哪,小说网站怎么建立?
北京制作网站的公司,北京铁路集团官方网站?
如何通过虚拟机搭建网站?详细步骤解析
如何在服务器上三步完成建站并提升流量?
广东专业制作网站有哪些,广东省能源集团有限公司官网?
如何在七牛云存储上搭建网站并设置自定义域名?
如何用低价快速搭建高质量网站?
保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?
C#怎么使用委托和事件 C# delegate与event编程方法
红河网站制作公司,红河事业单位身份证如何上传?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
大连网站设计制作招聘信息,大连投诉网站有哪些?
如何快速上传自定义模板至建站之星?
如何在阿里云购买域名并搭建网站?
建站之星如何保障用户数据免受黑客入侵?
如何在云指建站中生成FTP站点?
如何正确选择百度移动适配建站域名?
*请认真填写需求信息,我们会在24小时内与您取得联系。