博文 > php中Curl 的简单使用

php中Curl 的简单使用

Php 10002016-01-20 18:22:00

Curl是利用URL语法在命令行方式下工作的开源文件传输工具。它被广泛应用在Unix、多种Linux发行版中,并且有DOS和Win32、Win64下的移植版本。

中国气象台 http://www.nmc.gov.cn/publish/forecast/china.html

简单抓取一个网页

  1. //1.初始化,创建一个新cURL资源
  2. $ch = curl_init();
  3. //2.设置URL和相应的选项
  4. curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com");
  5. //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//输出网页
  6. curl_setopt($ch, CURLOPT_HEADER, 0);
  7. //3.抓取URL并把它传递给浏览器
  8. curl_exec($ch);
  9. //4.关闭cURL资源,并且释放系统资源
  10. curl_close($ch);
  11. 模拟登陆,后抓取一个网页
  12. $url = "http://192.168.1.201/ESSC/user.php";//登陆页面
  13. $curl_url = "http://192.168.1.201/ESSC/user.php?act=collection_list";//登陆后要curl的页面
  14. $data = 'username=123&password=admin123&act=act_login'; //登陆的参数
  15. $curlobj = curl_init(); //开启curl
  16. curl_setopt($curlobj,CURLOPT_URL,$url);////设置登陆的访问的URL
  17. //执行之后不打印出来
  18. curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,true);
  19. //COOKIE的相关设置,这部分设置需要在所有会话之前设置
  20. $content=curl_exec($curlobj); //执行
  21. curl_setopt($curlobj,CURLOPT_COOKIESESSION,TRUE); //设为 TRUE 时将开启新的一次 cookie 会话
  22. curl_setopt($curlobj,CURLOPT_COOKIEFILE,'cookiefile'); //包含 cookie 数据的文件名,cookie 文件的格式可以是 Netscape 格式,或者只是纯 HTTP 头部风格,存入文件
  23. curl_setopt($curlobj,CURLOPT_COOKIEJAR,'cookiefile'); //连接结束后,比如,调用 curl_close 后,保存cookie信息的文件。
  24. curl_setopt($curlobj,CURLOPT_HEADER,0); //启用时会将头文件的信息作为数据流输出
  25. curl_setopt($curlobj,CURLOPT_FOLLOWLOCATION,1);//这样能够让cURL支持页面链接跳转
  26. //POST方式提交必备三步
  27. curl_setopt($curlobj,CURLOPT_POST,1); //TRUE 时会发送 POST 请求
  28. curl_setopt($curlobj,CURLOPT_POSTFIELDS,$data); //全部数据使用HTTP协议中的 "POST" 操作来发送
  29. //设置 HTTP 头字段的数组。格式:array('Content-type: text/plain', 'Content-length: 100')
  30. curl_setopt($curlobj,CURLOPT_HTTPHEADER,array('application/x-www-form-urlencoded; charset=utf-8','Content-length:'.strlen($data)));
  31. curl_exec($curlobj); //执行
  32. curl_setopt($curlobj,CURLOPT_URL,$curl_url);
  33. curl_setopt($curlobj,CURLOPT_HTTPHEADER,array('Content-type:text/xml')); //设置 HTTP 头字段的数组
  34. $content = curl_exec($curlobj); //执行
  35. curl_close($curlobj); //关闭CURL

HTTP请求工具类:

  1. composer require tinymeng/tools: -vvv

Use curl implementation request,Support uploading pictures and custom header !

  1. <?php
  2. use tinymeng\tools\HttpRequest;
  3. $data = array(
  4. 'username'=>'majiameng',
  5. 'password'=>'majiameng',
  6. );
  7. $url = 'http://majiameng.com/login';
  8. //1.Curl Post Request
  9. $response = HttpRequest::httpPost($url,$data);
  10. //2.Curl Post File Request
  11. //<input name="file" type="file">
  12. $data = array(
  13. 'file' => new \CURLFile($_FILES['file']['tmp_name'],$_FILES['file']['type'],$_FILES['file']['name']),
  14. );
  15. $response = HttpRequest::httpPost($url,$data);
  16. //3.Curl Get Request
  17. $response = HttpRequest::httpGet($url,$data);