到目前为止,我们的公众号已经可以回复用户发出的消息,但是如果仅仅如此,就没必要设为开发模式了。完全不懂编程的人也可以在微信公众平台上设置回复用户的消息。
现在我们来实现我们的公众号查询全国各个城市天气这么一个功能,像公众号输入天气+地名(天气南京)就可以查询当地的天气情况。
具体实现
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,//空气质量指数,越小越好</