PHP+心知天气API实现手机端天气查询demo

前言

这两天恰逢软件系答辩,扫了一眼我大数本的毕设题目,好家伙八成是Web项目,怎奈我手痒+技穷,只能尝试用PHP来写个天气Demo了,说实话这两年国内好用的天气API接口越来越少了,心知天气算是比较坚挺的一个,申请完接口后发现稳定性还不如用公共开放接口,当然获取的信息也会少很多,没关系,我们懂原理就好。:)

开发准备

心知天气官网

值得一提的是,官网为我们准备了两套天气图标,虽然风格较老,但是做做demo没问题的。

核心代码

从心知API返回天气JSON数据

function weather(){
@$location=$_POST['location'];
$url="http://www.thinkpage.cn/weather/api.svc/getWeather?city=$location&language=zh-CHS&provider=CMA&unit=C&aqi=city";
$vhtml=curl_get_contents($url);//这是主函数~通过API接口返回JSON数据
$final=json_decode($vhtml,true);//对Json进行解码,便于提取数据
$GLOBALS['wind_scale']=$final["results"][0]["now"]["wind_scale"];//风力
$GLOBALS['location_name']=$final["results"][0]["location"]["name"];
$GLOBALS['now_code']=$final["results"][0] ["daily"][0]["text_day"];//当前天气
$GLOBALS['now_temp']=$final["results"][0]["now"]["temperature"];//当前温度
$GLOBALS['weather_code_today']=$final['results'][0]['now']['code'];//当前图标
...后面类似省略}

发起CURL连接

function curl_get_contents($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);//设置访问的url地址
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1');   //用户访问代理 User-Agent
curl_setopt($ch, CURLOPT_REFERER,"http://www.thinkpage.cn");//设置 referer
curl_setopt($ch, CURLOPT_TIMEOUT, 2);//设置超时
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//返回结果
curl_setopt($ch, CURLOPT_COOKIE, "");
$result = curl_exec($ch);
curl_close($ch);
return $result;}

效果


在线demo

前端代码不贴了,因为太简单了,想看的等我传到github。
这次总共不到300行代码就能实现比较令人开心的效果,以后可以举一反三咯~

收获

通过写这个demo我掌握了:

  • PHP对JSON数据的处理
  • 心知API部分功能的使用
  • 编写移动端网页的经验有所提高

遗憾

  • 前端方面依然离不开框架的帮助,框架虽好,可还是贪杯了:(