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

posted @ 2017-08-18 22:24  星光伴我心·  阅读(6508)  评论(0编辑  收藏  举报