到目前为止,我们的公众号已经可以回复用户发出的消息,但是如果仅仅如此,就没必要设为开发模式了。完全不懂编程的人也可以在微信公众平台上设置回复用户的消息。
现在我们来实现我们的公众号查询全国各个城市天气这么一个功能,像公众号输入天气+地名(天气南京)就可以查询当地的天气情况。
具体实现
1.选择API
我们使用阿里云的全国天气预报查询接口。根据API说明,调用地址:http(s)://ali-weather.showapi.com/area-to-weather,请求方式:GET,返回类型:JSON
请求参数:
名称 | 是否必须 | 描述 |
---|---|---|
area | 可选 | 地区名称。名称和id必须输入一个。如果都输入,以areaid为准。 |
areaid | 可选 | 地区id |
need3HourForcast | 可选 | 是否需要每小时数据的累积数组。由于本系统是半小时刷一次实时状态,因此实时数组最大长度为48。每天0点长度初始化为0. 1为需要 0为不 |
needAlarm | 可选 | 是否需要天气预警。1为需要,0为不需要。 |
needHourData | 可选 | 是否需要每小时数据的累积数组。由于本系统是半小时刷一次实时状态,因此实时数组最大长度为48。每天0点长度初始化为0. |
needIndex | 可选 | 是否需要返回指数数据,比如穿衣指数、紫外线指数等。1为返回,0为不返回。 |
needMoreDay | 可选 | 是否需要返回7天数据中的后4天。1为返回,0为不返回。 |
返回示例:
{
"showapi_res_code": 0,
"showapi_res_error": "",
"showapi_res_body": {
"f6": {
//今天+5天后的天气预报
"day_weather": "小雨",//白天天气
"night_weather": "小雨",//晚上天气
"night_weather_code": "07",//晚上的天气编码
"index": {
//指数对象
"cold": {
//感冒
"title": "少发",
"desc": "无明显降温,感冒机率较低。"
},
"clothes": {
//穿衣指数
"title": "舒适",
"desc": "建议穿长袖衬衫单裤等服装。"
},
"uv": {
//紫外线
"title": "最弱",
"desc": "辐射弱,涂擦SPF8-12防晒护肤品。"
},
"aqi": {
//空气质量指数,越小越好
"title": "良",
"desc": "气象条件有利于空气污染物扩散。"
},
"wash_car": {
//洗车
"title": "不宜",
"desc": "有雨,雨水和泥水会弄脏爱车。"
},
"travel": {
//旅游
"title": "较不宜",
"desc": "有降水,推荐您在室内进行休闲运动。"
}
},
"night_wind_power": "微风10m/h",//晚上风力编号
"day_wind_power": "微风10m/h",//白天风力编号
"day_weather_code": "07",//白天的天气编码
"sun_begin_end": "06:28|20:17",//日出日落时间(中间用|分割)
"day_weather_pic": "http://app1.showapi.com/weather/icon/day/07.png",//白天天气图标
"weekday": 1,//星期几
"night_air_temperature": "15",//晚上天气温度(摄氏度)
"day_air_temperature": "24",//白天天气温度(摄氏度)
"day_wind_direction": "无持续风向",//白天风向编号
"day": "20160704",//当前天
"night_weather_pic": "http://app1.showapi.com/weather/icon/night/07.png",//晚上天气图标
"night_wind_direction": "无持续风向"//晚上风向编号
},
"f7": {
//今天+6天后的天气预报
"day_weather": "小雨",//白天天气
"night_weather": "中雨",//晚上天气
"night_weather_code": "08",//晚上的天气编码
"index": {
//指数对象
"cold": {
//感冒
"title": "少发",
"desc": "无明显降温,感冒机率较低。"
},
"clothes": {
//穿衣指数
"title": "较舒适",
"desc": "建议穿薄外套或牛仔裤等服装。"
},
"uv": {
//紫外线
"title": "最弱",
"desc": "辐射弱,涂擦SPF8-12防晒护肤品。"
},
"wash_car": {
//洗车
"title": "较不宜",
"desc": "有降水,推荐您在室内进行休闲运动。"
},
"travel": {
//旅游
"title": "良",
"desc": "气象条件有利于空气污染物扩散。"
}
},
"night_wind_power": "微风10m/h",//晚上风力编号
"day_wind_power": "微风10m/h",//白天风力编号
"day_weather_code": "07",//白天的天气编码
"sun_begin_end": "06:28|20:17",//日出日落时间(中间用|分割)
"day_weather_pic": "http://app1.showapi.com/weather/icon/day/07.png",//白天天气图标
"weekday": 2,//星期几
"night_air_temperature": "15",//晚上天气温度(摄氏度)
"day_air_temperature": "23",//白天天气温度(摄氏度)
"day_wind_direction": "无持续风向",//白天风向编号
"day": "20160705",//当前天
"night_weather_pic": "http://app1.showapi.com/weather/icon/night/08.png",//晚上天气图标
"night_wind_direction": "无持续风向"//晚上风向编号
},
"time": "20160629113000",//预报发布时间
"ret_code": 0,
"cityInfo": {
//查询的地区基本资料
"c6": "yunnan",//城市所在省英文名
"c5": "丽江",//城市所在市中文名
"c4": "lijiang",//城市所在市英文名
"c3": "丽江",//城市中文名
"c9": "中国",//城市所在国家中文名
"c8": "china",//城市所在国家英文名
"c7": "云南",//城市所在省中文名
"c17": "+8",
"c16": "AZ9888",//雷达站号
"c1": "101291401",//区域id
"c2": "lijiang",//城市英文名
"c11": "0888",//城市区号
"longitude": 100.222,//经度
"c10": "2",//城市级别
"latitude": 26.903,//纬度
"c12": "674100",//邮编
"c15": "2394"//海拔
},
"now": {
//现在实时的天气情况
"aqiDetail": {
//aqi明细数据
"co": 0.38,//一氧化碳1小时平均
"so2": 8,//二氧化硫1小时平均
"area": "丽江",//地区
"o3": 42,//臭氧1小时平均
"no2": 9,//二氧化氮1小时平均
"area_code": "lijiang",
"quality": "优",//空气质量指数类别,有“优、良、轻度污染、中度污染、重度污染、严重污染”6类
"aqi": 19,//空气质量指数,越小越好
"pm10": 18,//颗粒物(粒径小于等于10μm)1小时平均
"pm2_5": 12,//颗粒物(粒径小于等于2.5μm)1小时平均
"o3_8h": 37,//臭氧8小时平均
"primary_pollutant": ""//首要污染物
},
"weather_code": "03",
"wind_direction": "西北风",//风向
"temperature_time": "16:01",//获得气温的时间
"wind_power": "1级",//风力
"aqi": 19,//空气质量指数&#