阿里云API:全国天气预报查询(免费版)(C#实现)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yeqi3000/article/details/77150113

阿里云接口》全国天气预报查询(免费版):https://market.aliyun.com/products/57126001/cmapi014302.html

返回结果主类:

/// <summary>
    /// 天气接口返回结果
    /// </summary>
    public class WeatherResult
    {
        /// <summary>
        /// 查询结果(0:成功,1:失败)
        /// </summary>
        public int status { get; set; }

        /// <summary>
        /// 描述
        /// </summary>
        public string msg { get; set; }

        /// <summary>
        /// 天气详情
        /// </summary>
        public WeatherData result { get; set; }
    }
其他子结构体:

/// <summary>
    /// 天气预报详情
    /// </summary>
    public class WeatherData
    {
        /// <summary>
        /// 城市
        /// </summary>
        public string city { get; set; }

        /// <summary>
        /// 城市ID
        /// </summary>
        public string cityid { get; set; }

        /// <summary>
        /// 城市代码
        /// </summary>
        public string citycode { get; set; }

        /// <summary>
        /// 日期
        /// </summary>
        public string date { get; set; }

        /// <summary>
        /// 星期
        /// </summary>
        public string week { get; set; }

        /// <summary>
        /// 当前天气
        /// </summary>
        public string weather { get; set; }

        /// <summary>
        /// 当前温度
        /// </summary>
        public decimal temp { get; set; }

        /// <summary>
        /// 最高温度
        /// </summary>
        public decimal temphigh { get; set; }

        /// <summary>
        /// 最低温度
        /// </summary>
        public decimal templow { get; set; }

        /// <summary>
        /// 天气图片数字
        /// </summary>
        public string img { get; set; }

        /// <summary>
        /// 湿度
        /// </summary>
        public decimal humidity { get; set; }

        /// <summary>
        /// 气压
        /// </summary>
        public string pressure { get; set; }

        /// <summary>
        /// 风速
        /// </summary>
        public decimal windspeed { get; set; }

        /// <summary>
        /// 风向
        /// </summary>
        public string winddirect { get; set; }

        /// <summary>
        /// 风级
        /// </summary>
        public string windpower { get; set; }

        /// <summary>
        /// 更新时间
        /// </summary>
        public string updatetime { get; set; }

        /// <summary>
        /// 生活指数集合
        /// </summary>
        public LiveIndex[] index { get; set; }

        /// <summary>
        /// AQI指数
        /// </summary>
        public AQI aqi { get; set; }

        /// <summary>
        /// 周天气预报
        /// </summary>
        public Daily[] daily { get; set; }

        /// <summary>
        /// 24小时天气预报
        /// </summary>
        public HourlyWeather[] hourly { get; set; }
    }

    /// <summary>
    /// 生活指数
    /// </summary>
    public struct LiveIndex
    {
        /// <summary>
        /// 名称
        /// </summary>
        public string iname { get; set; }

        /// <summary>
        /// 值
        /// </summary>
        public string ivalue { get; set; }

        /// <summary>
        /// 详情
        /// </summary>
        public string detail { get; set; }
    }

    /// <summary>
    /// AQI指数
    /// </summary>
    public struct AQI
    {
        /// <summary>
        /// 二氧化硫1小时平均
        /// </summary>
        public decimal so2 { get; set; }

        /// <summary>
        /// 二氧化硫24小时平均
        /// </summary>
        public decimal so224 { get; set; }

        /// <summary>
        /// 二氧化氮1小时平均
        /// </summary>
        public decimal no2 { get; set; }

        /// <summary>
        /// 二氧化氮24小时平均
        /// </summary>
        public decimal no224 { get; set; }

        /// <summary>
        /// 一氧化碳1小时平均 mg/m3
        /// </summary>
        public decimal co { get; set; }

        /// <summary>
        /// 一氧化碳24小时平均 mg/m3
        /// </summary>
        public decimal co24 { get; set; }

        /// <summary>
        /// 臭氧1小时平均
        /// </summary>
        public decimal o3 { get; set; }
        /// <summary>
        /// 臭氧8小时平均
        /// </summary>
        public decimal o38 { get; set; }
        /// <summary>
        /// 臭氧24小时平均
        /// </summary>
        public decimal o324 { get; set; }
        /// <summary>
        /// PM10 1小时平均
        /// </summary>
        public decimal pm10 { get; set; }
        /// <summary>
        /// PM10 24小时平均
        /// </summary>
        public decimal pm1024 { get; set; }
        /// <summary>
        /// PM2.5 1小时平均
        /// </summary>
        public decimal pm2_5 { get; set; }
        /// <summary>
        /// PM2.5 24小时平均
        /// </summary>
        public decimal pm2_524 { get; set; }

        /// <summary>
        /// 二氧化硫指数
        /// </summary>
        public decimal iso2 { get; set; }
        /// <summary>
        /// 二氧化氮指数
        /// </summary>
        public decimal ino2 { get; set; }
        /// <summary>
        /// 一氧化碳指数
        /// </summary>
        public decimal ico { get; set; }
        /// <summary>
        /// 臭氧指数
        /// </summary>
        public decimal io3 { get; set; }
        /// <summary>
        /// 臭氧8小时指数
        /// </summary>
        public decimal io38 { get; set; }
        /// <summary>
        /// PM10指数
        /// </summary>
        public decimal ipm10 { get; set; }
        /// <summary>
        /// PM2.5指数
        /// </summary>
        public decimal ipm2_5 { get; set; }
        /// <summary>
        /// AQI指数
        /// </summary>
        public decimal aqi { get; set; }
        /// <summary>
        /// 首要污染物
        /// </summary>
        public string primarypollutant { get; set; }
        /// <summary>
        /// 空气质量指数类别(有优、良、轻度污染、中度污染、重度污染、严重污染共6级)
        /// </summary>
        public string quality { get; set; }
        /// <summary>
        /// 发布时间
        /// </summary>
        public string timepodecimal { get; set; }

        /// <summary>
        /// AQI指数详情
        /// </summary>
        public AQIInfo aqiinfo { get; set; }
    }

    /// <summary>
    /// AQI指数详情
    /// </summary>
    public struct AQIInfo
    {
        /// <summary>
        /// 等级
        /// </summary>
        public string level { get; set; }

        /// <summary>
        /// 颜色值
        /// </summary>
        public string color { get; set; }

        /// <summary>
        /// 对健康的影响
        /// </summary>
        public string affect { get; set; }

        /// <summary>
        /// 建议采取的措施
        /// </summary>
        public string measure { get; set; }
    }

    /// <summary>
    /// 当日天气
    /// </summary>
    public struct Daily {
        /// <summary>
        /// 日期
        /// </summary>
        public string date { get; set; }

        /// <summary>
        /// 星期
        /// </summary>
        public string week { get; set; }

        /// <summary>
        /// 日升
        /// </summary>
        public string sunrise { get; set; }

        /// <summary>
        /// 日落
        /// </summary>
        public string sunset { get; set; }

        /// <summary>
        /// 当日夜间天气
        /// </summary>
        public DailyNightWeather night { get; set; }

        /// <summary>
        /// 当日白天天气
        /// </summary>
        public DailyDayWeather day { get; set; }
    }

    /// <summary>
    /// 当日夜间天气
    /// </summary>
    public struct DailyNightWeather
    {
        /// <summary>
        /// 天气
        /// </summary>
        public string weather { get; set; }

        /// <summary>
        /// 最低温度
        /// </summary>
        public decimal templow { get; set; }

        /// <summary>
        /// 天气图片数字
        /// </summary>
        public string img { get; set; }

        /// <summary>
        /// 风向
        /// </summary>
        public string winddirect { get; set; }

        /// <summary>
        /// 风级
        /// </summary>
        public string windpower { get; set; }
    }

    /// <summary>
    /// 当日白天天气
    /// </summary>
    public struct DailyDayWeather
    {
        /// <summary>
        /// 天气
        /// </summary>
        public string weather { get; set; }

        /// <summary>
        /// 最高温度
        /// </summary>
        public decimal temphigh { get; set; }

        /// <summary>
        /// 天气图片数字
        /// </summary>
        public string img { get; set; }

        /// <summary>
        /// 风向
        /// </summary>
        public string winddirect { get; set; }

        /// <summary>
        /// 风级
        /// </summary>
        public string windpower { get; set; }
    }

    /// <summary>
    /// 未来小时天气
    /// </summary>
    public struct HourlyWeather
    {
        /// <summary>
        /// 时间(小时)
        /// </summary>
        public string time { get; set; }

        /// <summary>
        /// 当前天气
        /// </summary>
        public string weather { get; set; }

        /// <summary>
        /// 当前温度
        /// </summary>
        public decimal temp { get; set; }

        /// <summary>
        /// 天气图片数字
        /// </summary>
        public string img { get; set; }
    }
接口实现:

/// <summary>
        /// 根据IP查询天气
        /// </summary>
        /// <param name="query">查询条件</param>
        /// <param name="appCode">AppCode(注册阿里云账户购买天气服务后获得)</param>
        /// <returns></returns>
        public static WeatherResult GetWeather(string query,string appCode)
        {
            string url = string.Format("http://jisutqybmf.market.alicloudapi.com/weather/query?{0}", query);
            List<string> headers = new List<string>();
            headers.Add("Authorization:APPCODE " + appCode);
            string fResultData = YHttp.Get(url, headers, "application/json;charset=utf-8");//此处是我自己封装的http库,自己替换为其他http库函数
            WeatherResult fResult = YSerialization.JsonDeserialize<WeatherResult>(fResultData);//此处是我自己封装的json反序列化,自己替换为其他json反序列化库函数
            return fResult;
        }

调用示例代码:

 var weather = YFmk.Lib.Aliyun.YAliyun.GetWeather("ip=49.80.112.93", "8fcaa71e973646a49ed84c8d66c86111");
            var weather2 = YFmk.Lib.Aliyun.YAliyun.GetWeather("city=常州", "8fcaa71e973646a49ed84c8d66c86111");
            var weather3 = YFmk.Lib.Aliyun.YAliyun.GetWeather("citycode=101191101", "8fcaa71e973646a49ed84c8d66c86111");
            var weather4 = YFmk.Lib.Aliyun.YAliyun.GetWeather("cityid=222", "8fcaa71e973646a49ed84c8d66c86111");

注意,上述代码中的appcode非可用appcode,需要自己去阿里云注册账号后0元购买此免费接口后获得。

调用结果:




猜你喜欢

转载自blog.csdn.net/yeqi3000/article/details/77150113