Curl的简单使用步骤

2018-08-16  本文已影响0人  半阳666

Curl的简单使用步骤

一、curl的简单使用步骤

     1.初始化

     2.设置请求选项

     3.执行一个cURL会话并且获取相关回复

     4.释放cURL句柄,关闭curl

具体实现:

1. 初始化一个cURL会话

        $ch = curl_init();

     2. 设置请求选项

        curl_setopt($ch, CURLOPT_URL, "http://www.360weboy.com");

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        curl_setopt($ch, CURLOPT_HEADER, 0);

     3. 执行Curl会话获取相关回复

         $response = curl_exec($ch);

     4. 释放Curl 句柄, 关闭Cur会话       

          curl_close($ch);

    二、curl 错误处理

        $response = curl_exec($ch); 

           if ($response  === FALSE) {

              echo "cURL 具体出错信息: " . curl_error($ch);

            }

    三、 获取curl请求的具体信息

       可以使用curl_getinfo获取该请求的具体信息:

          curl_exec($ch);

         $curl_info= curl_getinfo($ch);

          echo "收到的http回复的code为: {$curl_info['http_code']}";

     四. 使用curl 发送post请求

        $url = "http://www.360weboy.me/post.php";

         $post_data = array (

             "blog_name" => "360weboy",

             "blog_url" => "http://www.360weboy.com",

             "action" => "Submit"

          );

         $ch = curl_init();

         curl_setopt($ch, CURLOPT_URL, $url);

         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

         // 设置请求为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;

    五、 使用curl发送上传文件   

      代码如下:

         $url = "http://www.360weboy.me/upload.php";

        $post_data = array (

             "attachment" => "@E:/jackblog/boy.jpg"

        );

         //初始化cURL会话

        $ch = curl_init();

        //设置请求的url

        curl_setopt($ch, CURLOPT_URL, $url);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        //设置为post请求类型

        curl_setopt($ch, CURLOPT_POST, 1);

        //设置具体的post数据

        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

        $response = curl_exec($ch);

        curl_close($ch);

        print_r($response);

     六、文件下载

  上述将了文件上传,同样的也可以使用curl来自动地完成文件的下载以及保存。有一点要补充下,在执行一个curl请求时,如果你需要获取返回的内容,而不是直接输出返回的内容的话,别忘记使用下面的代码设置,因为curl的默认是输出请求的回复内容:

 代码如下:

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

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

 代码如下:

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

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

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

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

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

        $ch = curl_init($url);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $data = curl_exec($ch);

        curl_close($ch);

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

        file_put_contents($path, $data);

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

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

 代码如下:

        $url  = 'http://www.360weboy.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一边读取远程数据,一边写入到本地文件中。因为我们不需要在程序中获取远程回复的内容了,所以只要执行请求就可以。

七、http 验证

    如果服务器端需要验证请求,可以通过类似一下示例代码来实现:

     代码如下:

      $url = "http://www.360weboy.com/users/";

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, $url);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        // 设置用户名以及密码

        curl_setopt($ch, CURLOPT_USERPWD, "username:password");

        // 设置重导向

        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

        curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, 1);

        $response = curl_exec($ch);

        curl_close($ch);

 八、通过代理发送请求

        cURL还可以通过代理服务器来向发送请求,请看一下示例代码:

 代码如下:

         $ch = curl_init();

         curl_setopt($ch, CURLOPT_URL,'http://www.360weboy.com');

         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        // 设置代理ip地址

        curl_setopt($ch, CURLOPT_PROXY, '222.73.173.50:8080');

        // 要验证的话,这里设置用户名以及密码

        curl_setopt($ch, CURLOPT_PROXYUSERPWD,'username:password');

        $response = curl_exec($ch);

        curl_close ($ch);

上一篇下一篇

猜你喜欢

热点阅读