zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    《JavaScript 闯关记》之 BOM
    《JavaScript 闯关记》之单体内置对象
    《JavaScript 闯关记》之基本包装类型
    《JavaScript 闯关记》之正则表达式
    《JavaScript 闯关记》之函数
    《JavaScript 闯关记》之数组
    被「李笑来老师」拉黑之「JavaScript微博自动转发的脚本」
    「前端开发者」如何把握住「微信小程序」这波红利?
    android开发之路13(实际开发常见问题及解决办法ING)
    android开发之路12(android四大组件&Fragment&AsyncTask类)
  • 原文地址:https://www.cnblogs.com/maomaochongchong/p/8351004.html
Copyright © 2011-2022 走看看