全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

PHP中的使用curl发送请求(GET请求和POST请求)

使用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);

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

  • curl_init() 和 curl_close() 分别是初始化CURL连接和关闭CURL连接,都比较简单。
  • curl_exec() 执行CURL请求,如果没有错误发生,该函数的返回是对应URL返回的数据,以字符串表示满意;如果发生错误,该函数返回 FALSE。需要注意的是,判断输出是否为FALSE用的是全等号,这是为了区分返回空串和出错的情况。
  • CURL函数库里最重要的函数是curl_setopt(),它可以通过设定CURL函数库定义的选项来定制HTTP请求。上述代码片段中使用了三个重要的选项:

①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返回的是一个关联数组,包含以下数据:

  • 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,具体代码如下:

/**
 *@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小时内与您取得联系。