• 技术文章 >后端开发 >PHP问题

    php下curl用法是什么?

    coldplay.xixicoldplay.xixi2020-07-21 11:40:32原创663

    php下curl用法是:1、使用CURL发送请求;2、获取CURL请求的输出信息;3、使用CURL发送GET请求;4、使用CURL发送POST请求。

    php下curl用法是:

    一、使用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.codetc.com");
    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请求。上述代码片段中使用了三个重要的选项:

    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);
    }

    四、使用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编程从入门到精通

    以上就是php下curl用法是什么?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php curl
    上一篇:php如何删除非空目录 下一篇:php下fopen中文文件名乱码怎么办?
    大前端线上培训班

    相关文章推荐

    • php curl中常用的5个代码示例介绍• php curl_init函数怎么用• php curl发送请求详细教程• 关于php curl 错误码的说明• ubuntu php curl安装的步骤方法

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网