zoukankan      html  css  js  c++  java
  • 百度天气预报接口

    百度提供天气预报查询接口API,可以根据经纬度/城市名查询天气情况,我们可以在微信公众平台开发中调用这一接口。

    接口说明

    根据经纬度/城市名查询天气的结果

    接口示例

    http://api.map.baidu.com/telematics/v3/weather?location=北京&output=json&ak=yourkey&sn=yoursn
    百度ak申请地址:http://lbsyun.baidu.com/apiconsole/key
    sn算法见底部附录

    接口参数说明

    参数类型参数名称是否必须具体描述
    String ak true 开发者密钥
    String sn false 若用户所用ak的校验方式为sn校验时该参数必须。 
    String location true 输入城市名或经纬度,城市名称如:北京,经纬度格式为lng,lat坐标如: location=116.305145,39.982368;城市天气预报中间"|"分隔,location=116.305145,39.982368| 122.305145,36.982368|….
    String output false 输出的数据格式,默认为xml格式,当output设置为’json’时,输出的为json格式的数据;
    String coord_type false 请求参数坐标类型,默认为gcj02经纬度坐标。允许的值为bd09ll、bd09mc、gcj02、wgs84。bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托坐标,gcj02表示经过国测局加密的坐标。wgs84表示gps获取的坐标。

    返回结果

    参数名称含义说明
    currentCity 当前城市 返回城市名
    status 返回结果状态信息  
    date 当前时间 年-月-日
    results 天气预报信息 白天可返回近期3天的天气情况(今天、明天、后天)、晚上可返回近期4天的天气情况(今天、明天、后天、大后天)
    results.currentCity 当前城市  
    results.weather_data weather_data.date 天气预报时间  
    weather_data.dayPictureUrl 白天的天气预报图片url  
    weather_data.nightPictureUrl 晚上的天气预报图片url  
    weather_data.weather 天气状况 所有天气情况(”|”分隔符):晴|多云|阴|阵雨|雷阵雨|雷阵雨伴有冰雹|雨夹雪|小雨|中雨|大雨|暴雨|大暴雨|特大暴雨|阵雪|小雪|中雪|大雪|暴雪|雾|冻雨|沙尘暴|小雨转中雨|中雨转大雨|大雨转暴雨|暴雨转大暴雨|大暴雨转特大暴雨|小雪转中雪|中雪转大雪|大雪转暴雪|浮尘|扬沙|强沙尘暴|霾
    weather_data.wind 风力  
    weather_data.temperature 温度  

    返回xml格式的数据

    <?xml version="1.0" encoding="utf-8" ?> 
    <CityWeatherResponse>
        <status>success</status>
        <date>2014-05-03</date>
        <results> 
         
            <currentCity>北京</currentCity>
            <weather_data>
                                <date>周六(今天, 实时:22℃)</date>
                    <dayPictureUrl>http://api.map.baidu.com/images/weather/day/leizhenyu.png</dayPictureUrl>
                    <nightPictureUrl>http://api.map.baidu.com/images/weather/night/duoyun.png</nightPictureUrl>
                    <weather>雷阵雨转多云</weather>
                    <wind>北风5-6级</wind>
                    <temperature>24 ~ 11℃</temperature>
                                <date>周日</date>
                    <dayPictureUrl>http://api.map.baidu.com/images/weather/day/duoyun.png</dayPictureUrl>
                    <nightPictureUrl>http://api.map.baidu.com/images/weather/night/qing.png</nightPictureUrl>
                    <weather>多云转晴</weather>
                    <wind>北风4-5级</wind>
                    <temperature>19 ~ 8℃</temperature>
                                <date>周一</date>
                    <dayPictureUrl>http://api.map.baidu.com/images/weather/day/qing.png</dayPictureUrl>
                    <nightPictureUrl>http://api.map.baidu.com/images/weather/night/qing.png</nightPictureUrl>
                    <weather></weather>
                    <wind>微风</wind>
                    <temperature>21 ~ 9℃</temperature>
                                <date>周二</date>
                    <dayPictureUrl>http://api.map.baidu.com/images/weather/day/duoyun.png</dayPictureUrl>
                    <nightPictureUrl>http://api.map.baidu.com/images/weather/night/qing.png</nightPictureUrl>
                    <weather>多云转晴</weather>
                    <wind>微风</wind>
                    <temperature>21 ~ 10℃</temperature>
                        </weather_data>
            </results>
    </CityWeatherResponse>

    返回json格式的数据

    {
        "error": 0,
        "status": "success",
        "date": "2014-05-03",
        "results": [
            {
                "currentCity": "北京",
                "weather_data": [
                    {
                        "date": "周六(今天, 实时:22℃)",
                        "dayPictureUrl": "http://api.map.baidu.com/images/weather/day/leizhenyu.png",
                        "nightPictureUrl": "http://api.map.baidu.com/images/weather/night/duoyun.png",
                        "weather": "雷阵雨转多云",
                        "wind": "北风5-6级",
                        "temperature": "24 ~ 11℃"
                    },
                    {
                        "date": "周日",
                        "dayPictureUrl": "http://api.map.baidu.com/images/weather/day/duoyun.png",
                        "nightPictureUrl": "http://api.map.baidu.com/images/weather/night/qing.png",
                        "weather": "多云转晴",
                        "wind": "北风4-5级",
                        "temperature": "19 ~ 8℃"
                    },
                    {
                        "date": "周一",
                        "dayPictureUrl": "http://api.map.baidu.com/images/weather/day/qing.png",
                        "nightPictureUrl": "http://api.map.baidu.com/images/weather/night/qing.png",
                        "weather": "",
                        "wind": "微风",
                        "temperature": "21 ~ 9℃"
                    },
                    {
                        "date": "周二",
                        "dayPictureUrl": "http://api.map.baidu.com/images/weather/day/duoyun.png",
                        "nightPictureUrl": "http://api.map.baidu.com/images/weather/night/qing.png",
                        "weather": "多云转晴",
                        "wind": "微风",
                        "temperature": "21 ~ 10℃"
                    }
                ]
            }
        ]
    }
     

    附录1:sn计算算法

    
    

    sn = MD5(urlencode(basicString + sk))

    
    

    其中 basicString 的算法如下:

    
    
    1. (1) get 请求
      • url 中 http://域名{uri}
      • basicString = uri
    2. (2) post 请求
      • url 中 http://域名{uri} POST 参数按照key进行从小大到字母排序
      • 然后拼装成:k1= v1&k2= v2&k3=v3&...&kn=vn的格式=> {params}
      • basicString = uri +?+ params
    
    

    SN签名计算的PHP代码参考示例:

     
    1. /** 
    2. * @brief 计算SN签名算法 
    3. * @param string $ak access key 
    4. * @param string $sk secret key 
    5. * @param string $url url值,例如: /geosearch/nearby 不能带hostname和querstring,也不能带? 
    6. * @param array  $querystring_arrays 参数数组,key=>value形式。在计算签名后不能重新排序,也不能添加或者删除数据元素 
    7. * @param string $method 只能为'POST'或者'GET' 
    8. */  
    9. public function caculateAKSN($ak, $sk, $url, $querystring_arrays, $method = 'GET'){  
    10.     if ($method === 'POST'){  
    11.         ksort($querystring_arrays);  
    12.     }  
    13.     $querystring = http_build_query($querystring_arrays);  
    14.     return md5(urlencode($url.'?'.$querystring.$sk));  
    15. }  
    
    
    
    
    

    附录2:返回码定义

    
    
    
    
    
    返回码定义英文描述
    0 正常  
    1 服务器内部错误  
    2 请求参数非法  
    3 权限校验失败  
    4 配额校验失败  
    5 ak不存在或者非法  
    101 服务禁用  
    102 不通过白名单或者安全码不对  
    2xx 无权限  
    3xx 配额错误  
    
    

    控制服务部分错误码:

    
    
    202-205、210、233 无请求权限
    231 用户uid,ak不存在
    232 用户、ak被封禁
    234 sn签名计算错误
    210 权限资源不存在
    345 分钟配额超额
    346 月配额超额
    347 年配额超额
    348 永久配额超额无请求权限
    355 日配额超额
    350 配额资源不存在


    微信中开发实现的方法,请访问

    微信公众平台开发(4)天气预报

    
    
    

    效果如下:

    扫描下面的二维码可体验



  • 相关阅读:
    HDU1205 吃糖果【水题】
    HDU2568 前进【水题】
    架构图初体验
    五层架构
    文件系统权限设计涉及范畴
    微服务
    领域驱动设计
    容器技术Docker
    架构总结
    仓储模式的简单理解
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467519.html
Copyright © 2011-2022 走看看