• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

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

PHP admin 12个月前 (06-08) 6次浏览 未收录 0个评论

本篇文章主要介绍了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);

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

    ①CURLOPT_URL 指定请求的URL;

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

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

    CURL的选项还有很多,可以到PHP的官方网站(http://www.php.cn/)上查看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);="" curlopt_returntransfer,true);="" curlopt_timeout,="" (int)$timeout);="" 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);="" curlopt_postfields,="" $requeststring);="" curlopt_post,true);="" curlopt_returntransfer,true);="" curlopt_timeout,(int)$timeout);="" curl_exec($con);="" }


      上面代码中除了设置CURLOPT_POSTFIELDS外,我们还设置了CURL_POST为true,标识这个请求是一个POST请求。在POST请求中也是可以传输GET数据的,只需要在URL中拼装GET请求数据即可。

      以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。

      更多PHP中的使用curl发送请求(GET请求和POST请求)相关文章请关注PHP中文网!

      相关文章:

      php利用curl发起get请求时url的参数问题

      PHP使用curl函数发送Post请求的注意事项实例详解

      PHP开发技巧(八)-CURL请求的代码详情


      39MO , 版权所有丨如未注明 , 均为原创丨转载请注明原文链接:PHP中的使用curl发送请求(GET请求和POST请求)
      喜欢 (0)
      [1353713598@qq.com]
      分享 (0)
      发表我的评论
      取消评论
      表情 贴图 加粗 删除线 居中 斜体 签到

      Hi,您需要填写昵称和邮箱!

      • 昵称 (必填)
      • 邮箱 (必填)
      • 网址