zoukankan      html  css  js  c++  java
  • Thinkphp5使用api接口demo

    阿里云有免费的手机归属地api接口,作为新手的博主决定使用该接口写一个手机归属地查询网站,学习api的使用。

     主要思路:

    获取前台传入的手机号->写出请求url,请求头,请求方式->初始化cURL变量->设置cURL变量参数->执行查询,保存返回的json数据->关闭查询连接->将json数据解析为php数组->将该php数组赋值到模板->前台调用该数组值。

      public function index()
        {
            $num=input('m');                                     //获取前台提交的手机号
            $host='http://showphone.market.alicloudapi.com';       //查询主机链接
            $path="/6-1";
            $querys="num=".$num;                                 //查询参数
            $url=$host.$path.'?'.$querys;                           //完整请求链接
    
            $appcode='';                                       //阿里云提供的接口app码
            $headers = array();
            array_push($headers, "Authorization:APPCODE " . $appcode);//请求头
    
            $method='GET';                                               //请求方式
    
            $curl=curl_init();                                           //初始化一个curl句柄,用于获取其它网站内容
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method); //请求方式
            curl_setopt($curl, CURLOPT_URL, $url);   //请求url
            curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); //请求头
            curl_setopt($curl, CURLOPT_FAILONERROR, false);  //是否显示HTTP状态码
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//执行成功返回结果
            curl_setopt($curl, CURLOPT_HEADER, false);    //是否返回请求头信息
            if (1 == strpos("$".$host, "https://"))
            {
                curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//禁止curl验证对等证书
                curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);//不检查证书
            }
            $res=curl_exec($curl);//执行查询句柄
            curl_close($curl);    //关闭查询连接
            $resu=json_decode($res,true);//将json数据解码为php数组
    
            if($resu['showapi_res_body']['ret_code']==-1){          //返回错误码,查询失败
                return $this->error('没有查询结果,请重新输入','Index/index');
            }else{
                $this->assign('num',$num);           //将查询手机号写入模板
                $this->assign('res',$resu);          //将查询结果php数组写入模板
                return $this->fetch('index');
            }
        }

    1.cURL介绍

      cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 cURL 库。本文将介绍 cURL 的一些高级特性,以及在PHP中如何运用它。

    2.基本结构

    在学习更为复杂的功能之前,先来看一下在PHP中建立cURL请求的基本步骤:

    (1)初始化

     curl_init()

    (2)设置变量

    curl_setopt() 

    最为重要,一切玄妙均在此。有一长串cURL参数可供设置,它们能指定URL请求的各个细节。要一次性全部看完并理解可能比较困难,所以今天我们只试一下那些更常用也更有用的选项。

    (3)执行并获取结果

    curl_exec()

    (4)释放cURL句柄

    curl_close()

    3.cURL实现Get和Post

    3.1 Get方式实现

      //初始化
      $ch = curl_init();
     
      //设置选项,包括URL
      curl_setopt($ch, CURLOPT_URL, "http://www.jb51.net");
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_HEADER, 0);
    
      //执行并获取HTML文档内容
      $res = curl_exec($ch);
    
      //释放curl句柄
      curl_close($ch);
    
      //打印获得的数据 
        var_dump($res);

    3.2 Post方式实现

     
      $url = "http://localhost/web_services.php";
      $post_data = array ("username" => "bob","key" => "12345");
     
      $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);
    
      $res = curl_exec($ch);
      curl_close($ch);
    
      //打印获得的数据
      var_dump($res);

     4.使用php json_decode()函数解析json为数组。

     附上demo地址:https://github.com/ValueStar/PhoneNumberAttribution

  • 相关阅读:
    Shell脚本中循环语句for,while,until用法
    国内yum源的安装(163,阿里云,epel)
    express高效入门教程(4)
    express高效入门教程(3)
    express高效入门教程(2)
    express高效入门教程(1)
    dart快速入门教程 (8)
    dart快速入门教程 (7.4)
    dart快速入门教程 (7.3)
    dart快速入门教程 (7.2)
  • 原文地址:https://www.cnblogs.com/youth-dream/p/7392486.html
Copyright © 2011-2022 走看看