• php curl处理get和post请求


    CURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 CURL 库。使用PHP的CURL 库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,CURL 是一个功能强大的PHP库。

    PHP建立CURL请求的基本步骤

    ①:初始化

    curl_init()

    ②:设置属性

    curl_setopt().有一长串CURL 参数可供设置,它们能指定URL请求的各个细节。

    ③:执行并获取结果

    curl_exec()

    ④:释放句柄

    curl_close()

    CURL实现GET和POST

    ①:GET方式实现

    复制代码
     1  //初始化
     2     $curl = curl_init();
     3     //设置抓取的url
     4     curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
     5     //设置头文件的信息作为数据流输出
     6     curl_setopt($curl, CURLOPT_HEADER, 1);
     7     //设置获取的信息以文件流的形式返回,而不是直接输出。
     8     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
     9     //执行命令
    10     $data = curl_exec($curl);
    11     //关闭URL请求
    12     curl_close($curl);
    13     //显示获得的数据
    14     print_r($data);
    复制代码

    ②:POST方式实现

    复制代码
     1 //初始化
     2     $curl = curl_init();
     3     //设置抓取的url
     4     curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
     5     //设置头文件的信息作为数据流输出
     6     curl_setopt($curl, CURLOPT_HEADER, 1);
     7     //设置获取的信息以文件流的形式返回,而不是直接输出。
     8     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
     9     //设置post方式提交
    10     curl_setopt($curl, CURLOPT_POST, 1);
    11     //设置post数据
    12     $post_data = array(
    13         "username" => "coder",
    14         "password" => "12345"
    15         );
    16     curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
    17     //执行命令
    18     $data = curl_exec($curl);
    19     //关闭URL请求
    20     curl_close($curl);
    21     //显示获得的数据
    22     print_r($data);
    复制代码

    ③:如果获得的数据时json格式的,使用json_decode函数解释成数组。

    $output_array = json_decode($data,true); //如果第二个参数为true,就转为数组的形式。如果不填就为对象的形式

    如果使用json_decode($data)解析的话,将会得到object类型的数据。

    我自己封装的一个函数

    复制代码
     1 //参数1:访问的URL,参数2:post数据(不填则为GET),参数3:提交的$cookies,参数4:是否返回$cookies
     2  function curl_request($url,$post='',$cookie='', $returnCookie=0){
     3         $curl = curl_init();
     4         curl_setopt($curl, CURLOPT_URL, $url);
     5         curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');
     6         curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
     7         curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
     8         curl_setopt($curl, CURLOPT_REFERER, "http://XXX");
     9         if($post) {
    10             curl_setopt($curl, CURLOPT_POST, 1);
    11             curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
    12         }
    13         if($cookie) {
    14             curl_setopt($curl, CURLOPT_COOKIE, $cookie);
    15         }
    16         curl_setopt($curl, CURLOPT_HEADER, $returnCookie);
    17         curl_setopt($curl, CURLOPT_TIMEOUT, 10);
    18         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    19         $data = curl_exec($curl);
    20         if (curl_errno($curl)) {
    21             return curl_error($curl);
    22         }
    23         curl_close($curl);
    24         if($returnCookie){
    25             list($header, $body) = explode("
    
    ", $data, 2);
    26             preg_match_all("/Set-Cookie:([^;]*);/", $header, $matches);
    27             $info['cookie']  = substr($matches[1][0], 1);
    28             $info['content'] = $body;
    29             return $info;
    30         }else{
    31             return $data;
    32         }
    33 }
    复制代码

    这俩个函数虽然不难,但是还是值得学习一下的。因为在做接口或者调用的接口的时候,必定会用到这俩个函数。

  • 相关阅读:
    数据库字段太多,批量快速建立实体类方法(适合大量字段建立实体类)
    SQL service 中的 ”输入SQL命令窗口“ 打开了 “属性界面” 回到 ”输入SQL命令窗口“
    计算机软件编程英语词汇集锦
    编程常用英语词汇
    svn上传和下载项目
    当启动tomcat时出现tomcat setting should be set in tomcat preference page
    Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor
    eclipse中选中一个单词 其他相同的也被选中 怎么设置
    Spring Boot的@SpringBootApplication无法引入的问题
    最全的SpringCloud视频教程
  • 原文地址:https://www.cnblogs.com/myJuly/p/10107289.html
Copyright © 2020-2023  润新知