cURL的一些使用方法

sanlanlan 2017-9-8 标签: CURL 浏览:1295 评论:0

要使用cURL来发送请求,具体步骤大体分为以下以下四步:
 1.初始化,创建一个新cURL资源
 2.设置URL和相应的选项
 3.抓取URL并把它传递给浏览器
 4.关闭cURL资源,并且释放系统资源


下面给大家介绍下cURL的一些使用方法:

使用cURL发送Post请求
        现在,让我们使用cURL来模拟发送一个post请求到post.php脚本,提交几个数据到post.php,然后在post.php中输出post请求中的数据。示例代码如下:
        $url = "http://www.xixinice.com/post.php";
        $post_data = array (
        "blog_name" => "xixinice",
        "blog_url" => "http://www.xixinice.com",
        "action" => "Submit"
        );
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //如果成功,只将结果返回,不自动输出任何内容,如果失败返回false
        // 设置请求为post类型
        curl_setopt($ch, CURLOPT_POST, 1);
        // 添加post数据到请求中
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
        // 执行post请求,获得回复
        $response= curl_exec($ch);
        curl_close($ch);
        echo $response;
            以上请求发送到post.php中后,通过print_r($_POST)输出后,以上示例代码会输出如下回复:
        Array (
        [blog_name] => xixinice
        [blog_url] => http://www.xixinice.com
        [action] => Submit
        )
             正如我们看到的,cURL成功发送post请求到post.php,提交了一些数据,并且收到了相应的来自post.php的回复,最后输出回复。上例虽然简单,但是充分演示了cURL发送post请求的便捷及强大之处,你可以在curl_setopt上做文章。


文件下载          

    有一点要补充下,在执行一个curl请求时,如果你需要获取返回的内容,而不是直接输出返回的内容的话,别忘记使用下面的代码设置,因为curl的默认是输出请求的回复内容:   

     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);       

    假如在服务器根目录下面有一个test.zip文件,我们需要将其下载下来,并且保存到本地文件中,就可以尝试使用下面的代码来实现:         

    //设置请求的下载文件的url        

     $url = 'http://www.xixinice.com/test.zip';        

     //保存到本地的文件路径         

    $path = 'local/path/to/test.zip';         

    //初始化请求,设置请求,获取回复,关闭会话         

    $ch = curl_init($url);         

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    

    //如果成功,只将结果返回,不自动输出任何内容,如果失败返回false         

    $data = curl_exec($ch);         

    curl_close($ch);         

    //将文件内容写入本地文件         

    file_put_contents($path, $data);       

     注意:我以上省略了错误处理方面的代码,只是简单做个示例, 在实际中,你还需要通过curl_getinfo函数来进行错误处理!       

    上述代码对于下载比较大型的文件是不适用的,因为需要先将文件读取到内存中,等所有内容都读取完毕,然后再写入到本地硬盘中。即使php中设置的memory limit非常大,这种情况对性能的影响也是很大的。所以,我们对于大型文件的下载,应该让curl来接管这个任务,实现边下载,边写入的处理,这样的话,就没什么问题了。   

    请看下述代码:         

    $url = 'http://www.xixinice.com/test.zip';         

    $path = 'local/path/to/test.zip';         

    // 打开本地文件     $fp = fopen($path, 'w');        

     // 告诉curl本地文件句柄       

     $ch = curl_init($url);        

     curl_setopt($ch, CURLOPT_FILE, $fp);    

     curl_exec($ch);    

     curl_close($ch);    

     fclose($fp);             

在上述代码中,我们先打开个本地文件,并将文件句柄设置到curl中,然后让curl一边读取远程数据,一边写入到本地文件中。因为我们不需要在程序中获取远程回复的内容了,所以只要执行请求就可以。 

本文相关标签: curl php

发表评论: