美文网首页
Curl的简单使用步骤

Curl的简单使用步骤

作者: 半阳666 | 来源:发表于2018-08-16 15:50 被阅读0次

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

    相关文章

      网友评论

          本文标题:Curl的简单使用步骤

          本文链接:https://www.haomeiwen.com/subject/hglobftx.html