微信开发学习笔记三(天气预报)

来源:互联网 发布:mp3推荐知乎 编辑:程序博客网 时间:2024/05/04 07:33

我用的接口是百度开放平台上的,先要创建一个服务号,获取AK

详细参见http://jingyan.baidu.com/article/4dc408489fa6b3c8d946f137.html

如下,百度的接口数据说明:

天气查询
  • 接口说明
  • 接口示例
  • 接口参数说明
  • 返回结果
  • 返回xml格式的数据
  • 返回json格式的数据

接口说明

天气API主要应用场景:根据经纬度/城市名查询天气的结果。

注意事项:

1、天气API仅提供给汽车相关产品小规模免费使用,非车联网相关的产品一概无法提供支持!

2、天气API无法提供超过5000次的天气服务免费支持!

如需商业合作请将公司名称、产品介绍等先关信息发送至(liushuo01@baidu.com)

接口示例

http://api.map.baidu.com/telematics/v3/weather?location=北京&output=json&ak=E4805d16520de693a3fe707cdc962045

接口参数说明

参数类型参数名称是否必须具体描述Stringaktrue开发者密钥Stringsnfalse若用户所用ak的校验方式为sn校验时该参数必须。 (sn生成算法)Stringlocationtrue支持经纬度和城市名两种形式,一次请求最多支持15个城市,之间用"|"分隔,同一个城市的经纬度之间用 "," 分隔。举例:location=116.43,40.75|120.22,43,33或者是location=北京|上海|广州。Stringoutputfalse输出的数据格式,默认为xml格式,当output设置为’json’时,输出的为json格式的数据;Stringcoord_typefalse请求参数坐标类型,默认为gcj02经纬度坐标。允许的值为bd09ll、bd09mc、gcj02、wgs84。bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托坐标,gcj02表示经过国测局加密的坐标。wgs84表示gps获取的坐标。Stringcallbackfalse将json格式的返回值通过callback函数返回以实现jsonp功能。举例:callback=showLocation(JavaScript函数名)。

返回结果

参数名称含义说明currentCity当前城市返回城市名status返回结果状态信息请求状态,如果成功返回0,如果失败返回其他数字,详细见状态码附录。date当前时间年-月-日results天气预报信息白天可返回近期3天的天气情况(今天、明天、后天)、晚上可返回近期4天的天气情况(今天、明天、后天、大后天)results.currentCity当前城市 results.pm25pm2.50~50,一级,优,绿色;

51~100,二级,良,黄色; 101~150,三级,轻度污染,橙色; 151~200,四级,中度污染 ,红色; 201~300,五级,重度污染 ,紫色; >300,六级,严重污染, 褐红色。 图标分类示意图: pm25green.png优, pm25yellow.png 良 , pm25orange.png 轻度污染,pm25red.png 中度污染,pm25purple.png 重度污染, pm25balck.png 严重污染。

results.index.title指数title分为:穿衣、洗车、感冒、运动、紫外线这几个类型。results.index.zs指数取值不同指数描述不一results.index.tipt指数含义指数含义results.index.des指数详情指数详情results.weather_dataweather_data.date天气预报时间 weather_data.dayPictureUrl白天的天气预报图片url weather_data.nightPictureUrl晚上的天气预报图片url weather_data.weather天气状况常见天气情况(“|”分隔符):晴|多云|阴|阵雨|雷阵雨|雷阵雨伴有冰雹|雨夹雪|小雨|中雨|大雨|暴雨|大暴雨|特大暴雨|阵雪|小雪|中雪|大雪|暴雪|雾|冻雨|沙尘暴|小雨转中雨|中雨转大雨|大雨转暴雨|暴雨转大暴雨|大暴雨转特大暴雨|小雪转中雪|中雪转大雪|大雪转暴雪|浮尘|扬沙|强沙尘暴|霾weather_data.wind风力风力值weather_data.temperature温度温度范围,如:29~22℃

返回xml格式的数据

<CityWeatherResponse><status>success</status><date>2013-07-18</date><results><currentCity>北京市</currentCity><weather_data><date>周三(今天, 实时:24℃)</date><dayPictureUrl>http://api.map.baidu.com/images/weather/day/duoyun.png</dayPictureUrl><nightPictureUrl>http://api.map.baidu.com/images/weather/night/duoyun.png</nightPictureUrl><weather>多云</weather><wind>微风</wind><temperature>23℃~ 15℃</temperature><date>周四</date><dayPictureUrl>http://api.map.baidu.com/images/weather/day/leizhenyu.png</dayPictureUrl><nightPictureUrl>http://api.map.baidu.com/images/weather/night/zhongyu.png</nightPictureUrl><weather>雷阵雨转中雨</weather><wind>微风</wind><temperature>29~22℃</temperature><date>周五</date><dayPictureUrl>http://api.map.baidu.com/images/weather/day/yin.png</dayPictureUrl><nightPictureUrl>http://api.map.baidu.com/images/weather/night/duoyun.png</nightPictureUrl><weather>阴转多云</weather><wind>微风</wind><temperature>31~23℃</temperature><date>周六</date><dayPictureUrl>http://api.map.baidu.com/images/weather/day/duoyun.png</dayPictureUrl><nightPictureUrl>http://api.map.baidu.com/images/weather/night/duoyun.png</nightPictureUrl><weather>多云</weather><wind>微风</wind><temperature>31~24℃</temperature></weather_data><currentCity>合肥市</currentCity><weather_data><date>周三</date><dayPictureUrl>http://api.map.baidu.com/images/weather/day/duoyun.png</dayPictureUrl><nightPictureUrl>http://api.map.baidu.com/images/weather/night/duoyun.png</nightPictureUrl><weather>多云</weather><wind>东风3-4级</wind><temperature>27℃</temperature><date>周四</date><dayPictureUrl>http://api.map.baidu.com/images/weather/day/duoyun.png</dayPictureUrl><nightPictureUrl>http://api.map.baidu.com/images/weather/night/duoyun.png</nightPictureUrl><weather>多云</weather><wind>东北风3-4级</wind><temperature>35~27℃</temperature><date>周五</date><dayPictureUrl>http://api.map.baidu.com/images/weather/day/duoyun.png</dayPictureUrl><nightPictureUrl>http://api.map.baidu.com/images/weather/night/duoyun.png</nightPictureUrl><weather>多云</weather><wind>南风</wind><temperature>35~27℃</temperature><date>周六</date><dayPictureUrl>http://api.map.baidu.com/images/weather/day/duoyun.png</dayPictureUrl><nightPictureUrl>http://api.map.baidu.com/images/weather/night/duoyun.png</nightPictureUrl><weather>多云</weather><wind>东风</wind><temperature>34~27℃</temperature></weather_data></results></CityWeatherResponse><weather>阵雨</weather><wind>东北风3-4级</wind><temperature>18℃</temperature><index><title>穿衣</title><zs>舒适</zs><tipt>穿衣指数</tipt><des>建议着长袖T恤、衬衫加单裤等服装。年老体弱者宜着针织长袖衬衫、马甲和长裤。</des><title>洗车</title><zs>不宜</zs><tipt>洗车指数</tipt><des>不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。</des><title>感冒</title><zs>较易发</zs><tipt>感冒指数</tipt><des>相对今天出现了较大幅度降温,较易发生感冒,体质较弱的朋友请注意适当防护。</des><title>运动</title><zs>较不宜</zs><tipt>运动指数</tipt><des>有降水,推荐您在室内进行健身休闲运动;若坚持户外运动,须注意携带雨具并注意避雨防滑。</des><title>紫外线强度</title><zs>弱</zs><tipt>紫外线强度指数</tipt><des>紫外线强度较弱,建议出门前涂擦SPF在12-15之间、PA+的防晒护肤品。</des></index><pm25>166</pm25></results></CityWeatherResponse>

返回json格式的数据

{error: 0,status: "success",date: "2013-07-17",results: [{currentCity: "北京市",pm25: "166",index: [{title: "穿衣",zs: "舒适",tipt: "穿衣指数",des: "建议着长袖T恤、衬衫加单裤等服装。年老体弱者宜着针织长袖衬衫、马甲和长裤。"},{title: "洗车",zs: "不宜",tipt: "洗车指数",des: "不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。"},{title: "感冒",zs: "较易发",tipt: "感冒指数",des: "相对今天出现了较大幅度降温,较易发生感冒,体质较弱的朋友请注意适当防护。"},{title: "运动",zs: "较不宜",tipt: "运动指数",des: "有降水,推荐您在室内进行健身休闲运动;若坚持户外运动,须注意携带雨具并注意避雨防滑。"},{title: "紫外线强度",zs: "弱",tipt: "紫外线强度指数",des: "紫外线强度较弱,建议出门前涂擦SPF在12-15之间、PA+的防晒护肤品。"}],weather_data: [{date: "周三(今天, 实时:24℃)",dayPictureUrl: "http://api.map.baidu.com/images/weather/day/duoyun.png",nightPictureUrl: "http://api.map.baidu.com/images/weather/night/duoyun.png",weather: "多云",wind: "微风",temperature: "23℃~ 15℃"},{date: "明天(周四)",dayPictureUrl: "http://api.map.baidu.com/images/weather/day/leizhenyu.png",nightPictureUrl: "http://api.map.baidu.com/images/weather/night/zhongyu.png",weather: "雷阵雨转中雨",wind: "微风",temperature: "29~22℃"},{date: "后天(周五)",dayPictureUrl: "http://api.map.baidu.com/images/weather/day/yin.png",nightPictureUrl: "http://api.map.baidu.com/images/weather/night/duoyun.png",weather: "阴转多云",wind: "微风",temperature: "31~23℃"},{date: "大后天(周六)",dayPictureUrl: "http://api.map.baidu.com/images/weather/day/duoyun.png",nightPictureUrl: "http://api.map.baidu.com/images/weather/night/duoyun.png",weather: "多云",wind: "微风",temperature: "31~24℃"}]},{currentCity: "合肥市",weather_data: [{date: "今天(周三)",dayPictureUrl: "http://api.map.baidu.com/images/weather/day/duoyun.png",nightPictureUrl: "http://api.map.baidu.com/images/weather/night/duoyun.png",weather: "多云",wind: "东风3-4级",temperature: "27℃"},{date: "明天(周四)",dayPictureUrl: "http://api.map.baidu.com/images/weather/day/duoyun.png",nightPictureUrl: "http://api.map.baidu.com/images/weather/night/duoyun.png",weather: "多云",wind: "东北风3-4级",temperature: "35~27℃"},{date: "后天(周五)",dayPictureUrl: "http://api.map.baidu.com/images/weather/day/duoyun.png",nightPictureUrl: "http://api.map.baidu.com/images/weather/night/duoyun.png",weather: "多云",wind: "南风",temperature: "35~27℃"},{date: "大后天(周六)",dayPictureUrl: "http://api.map.baidu.com/images/weather/day/duoyun.png",nightPictureUrl: "http://api.map.baidu.com/images/weather/night/duoyun.png",weather: "多云",wind: "东风",temperature: "34~27℃"}]}]}
按照上面的说明,写了如下的代码,使用json,图文是用$data传递的

public function BaiduWeather($object, $location)    {        $url_weather = "http://api.map.baidu.com/telematics/v3/weather?location=" . $location . "&output=json";        $url_weather = $url_weather . "&ak=Kg7BQmPU7op";        $jsonStyle = file_get_contents($url_weather);        $jsonStr = json_decode($jsonStyle, true);        $city = $jsonStr[results][0][currentCity] . "\n" . "PM2.5: " . $jsonStr[results][0][pm25] . "\n";        foreach ($jsonStr[results][0][index] as $index) {            $city = $city . $index[title] . ": " . $index[zs] . "\n" . $index[tipt] . ": " . $index[des] . "\n";        }                $data_title = array();        $data_picUrl = array();                // 将获得的数据写到图文结构中        // global $data_title,$data_picUrl;        foreach ($jsonStr[results][0][weather_data] as $weather_data) {            $data_title[] = $weather_data[date] . "," . $weather_data[weather] . "," . $weather_data[wind] . "," . $weather_data[temperature];            $data_picUrl[] = $weather_data[dayPictureUrl];        }        $openid = $object->FromUserName;        $data = '{         "touser":"' . $openid . '",         "msgtype":"news",         "news":{         "articles":[              {                  "title":"' . $location . '天气预报",                  "description":"",                  "picurl":"",                  "url":""              },              {                  "title":"' . $data_title[0] . '",                  "description":"",                  "picurl":"' . $data_picUrl[0] . '",                  "url":""              },              {                  "title":"' . $data_title[1] . '",                  "description":"",                  "picurl":"' . $data_picUrl[1] . '",                  "url":""              },              {                  "title":"' . $data_title[2] . '",                  "description":"",                  "picurl":"' . $data_picUrl[2] . '",                  "url":""              },              {                  "title":"' . $data_title[3] . '",                  "description":"",                  "picurl":"' . $data_picUrl[3] . '",                  "url":""              }        ]    }}';                // global $url1,$data;        $this->https_request($GLOBALS['url1'], $data);        return $this->transmitText($object, $city);    }


0 0
原创粉丝点击