版权声明:本文为博主原创文章,未经博主允许不得转载。 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元购买此免费接口后获得。
调用结果: