zoukankan      html  css  js  c++  java
  • php调用阿里云天气预报

    weather.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>天气查询</title>
    </head>
    <body>
        <form action="weather.php" method="get">
        <input type="text" name="area">
        <input type="submit" name="查询">
        </form>
    </body>
    </html>
    <input type="text" name="area"> area传值到php页面  想要查询天气的地名
    建一个weather.php文件
    内容:
    <?php
         header("Content-Type:text/html;charset=UTF-8");
         date_default_timezone_set("PRC");
        // $host = "http://ali-weather.showapi.com/ip-to-weather";    //通过ip地址查询天气
        $host = "http://ali-weather.showapi.com/area-to-weather";   //通过地区名字查询天气
        $method = "GET";
        $appcode = "ff90fe45686e4cb8b3e260f2692798b4";//需要到阿里云购买服务,获取appcode
        $headers = array();
        array_push($headers, "Authorization:APPCODE " . $appcode);
        array_push($headers, "Content-Type: application/x-www-form-urlencoded; charset=utf-8");
        $querys="area=".$_GET['area'];//获取html页面传递过来的地区名字
        $bodys = "";
        $url = $host . "?" . $querys;
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($curl, CURLOPT_FAILONERROR, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HEADER, true);
        if (1 == strpos("$".$host, "https://"))
        {
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        }
        curl_setopt($curl, CURLOPT_POSTFIELDS, $bodys);
        $response = curl_exec($curl);
        $header_size    = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
        //echo  $header_size;
        $headers        = substr($response, 0, $header_size);
        //echo  $headers;$body    = substr($response, $header_size);
        //解析 $body对象 $weather=json_decode($body);
    
    echo  "<img src=".$weather->showapi_res_body->f1->day_weather_pic." /><br>";
    echo  "城市:  ".$weather->showapi_res_body->cityInfo->c5."<br/>";
    echo  "白天天气:  ".$weather->showapi_res_body->f1->day_weather."<br/>";
    echo  "晚上天气:  ".$weather->showapi_res_body->f1->night_weather."<br/>";
    echo  "最低温度:  ".$weather->showapi_res_body->f1->night_air_temperature."<br/>";
    echo  "最高温度:  ".$weather->showapi_res_body->f1->day_air_temperature."<br/>";
     echo  "PM2.5:  ".$weather->showapi_res_body->now->aqiDetail->pm2_5." ".$weather->showapi_res_body->now->aqiDetail->quality."<br/>";
     ?>    

    效果截图

    难点:主要在解析json返回的格式上面

    $body 返回数据:

     {"showapi_res_code":0,"showapi_res_error":"","showapi_res_body":{"time":"20170811073000","ret_code":0,"now":{"aqiDetail":{"co":"0.764","num":"166","so2":"7","area":"杭州","o3":"9","no2":"44","quality":"优质","aqi":"47","pm10":"46","pm2_5":"27","o3_8h":"19","primary_pollutant":""},"weather_code":"01","temperature_time":"08:30","wind_direction":"南风","wind_power":"2级","sd":"74%","aqi":"47","weather":"多云","weather_pic":"http://app1.showapi.com/weather/icon/day/01.png","temperature":"29"},"cityInfo":{"c6":"zhejiang","c5":"杭州","c4":"hangzhou","c3":"杭州","c9":"中国","c8":"china","c7":"浙江","c17":"+8","c16":"AZ9571","c1":"101210101","c2":"hangzhou","longitude":120.165,"c11":"0571","latitude":30.319,"c10":"1","c12":"310000","c15":"43"},"f1":{"day_weather":"多云","night_weather":"多云","night_weather_code":"01","air_press":"1004 hPa","jiangshui":"2%","night_wind_power":"微风 <5.4m/s","day_wind_power":"微风 <5.4m/s","day_weather_code":"01","sun_begin_end":"05:23|18:45","ziwaixian":"很强","day_weather_pic":"http://app1.showapi.com/weather/icon/day/01.png","weekday":5,"night_air_temperature":"27","day_air_temperature":"36","day_wind_direction":"东南风","day":"20170811","night_weather_pic":"http://app1.showapi.com/weather/icon/night/01.png","night_wind_direction":"东南风"},"f3":{"day_weather":"多云","night_weather":"多云","night_weather_code":"01","air_press":"1004 hPa","jiangshui":"1%","night_wind_power":"3-4级 5.5~7.9m/s","day_wind_power":"3-4级 5.5~7.9m/s","day_weather_code":"01","sun_begin_end":"05:25|18:44","ziwaixian":"很强","day_weather_pic":"http://app1.showapi.com/weather/icon/day/01.png","weekday":7,"night_air_temperature":"28","day_air_temperature":"37","day_wind_direction":"东南风","day":"20170813","night_weather_pic":"http://app1.showapi.com/weather/icon/night/01.png","night_wind_direction":"西南风"},"f2":{"day_weather":"雷阵雨","night_weather":"多云","night_weather_code":"01","air_press":"1004 hPa","jiangshui":"82%","night_wind_power":"3-4级 5.5~7.9m/s","day_wind_power":"微风 <5.4m/s","day_weather_code":"04","sun_begin_end":"05:24|18:45","ziwaixian":"很强","day_weather_pic":"http://app1.showapi.com/weather/icon/day/04.png","weekday":6,"night_air_temperature":"27","day_air_temperature":"32","day_wind_direction":"东南风","day":"20170812","night_weather_pic":"http://app1.showapi.com/weather/icon/night/01.png","night_wind_direction":"东南风"},"showapi_treemap":true}}

    对于新手需要调整好json格式才好进行解析 ,在ide工具上按照{ } 和  ,进行一个层次拆分 然后就比较好解析 记得缩进。

    Old soldiers never die
  • 相关阅读:
    vue动态改变样式
    前端上传到七牛云图片
    vue实现发送验证码60秒
    移动端使用lib-flexible
    作用域插槽
    vue中的keep-alive
    vue优化
    vue动画move的实现
    vue自带的动画效果
    v-model的理解
  • 原文地址:https://www.cnblogs.com/open88/p/7343983.html
Copyright © 2011-2022 走看看