C#获取中国天气网免费天气预报信息
中国天气网接口地址:”http://wthrcdn.etouch.cn/WeatherApi?citykey=” + weatherCityCode(为城市code);
下面是转化过程中我们需要用到的方法(序列化的实体类在文章结尾附)
1 2 3 | string weatherInfoUrl = "http://wthrcdn.etouch.cn/WeatherApi?citykey=" + weatherCityCode; string weatherstr = getHtml2(weatherInfoUrl); resp tempInfo = XmlDeSeralizer<resp>(weatherstr); |
转化过程中需要用到的方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | private static string GetHtml( string url) { StringBuilder s = new StringBuilder(102400); HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url); wr.Headers[HttpRequestHeader.AcceptEncoding] = "gzip, deflate" ; HttpWebResponse response = (HttpWebResponse)wr.GetResponse(); Head(response); GZipStream g = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress); byte [] d = new byte [20480]; int l = g.Read(d, 0, 20480); while (l > 0) { s.Append(Encoding.UTF8.GetString(d, 0, l)); l = g.Read(d, 0, 20480); } return s.ToString(); } private static void Head(HttpWebResponse r) { string [] keys = r.Headers.AllKeys; for ( int i = 0; i < keys.Length; ++i) { Console.WriteLine(keys[i] + " " + r.Headers[keys[i]]); } } public static T XmlDeSeralizer<T>( string xmlStr) where T : class , new () { XmlSerializer xs = new XmlSerializer( typeof (T)); using (StringReader reader = new StringReader(xmlStr)) { return xs.Deserialize(reader) as T; } } |
天气实体类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | public class resp { public string city { get ; set ; } public string updatetime { get ; set ; } public string wendu { get ; set ; } public string fengli { get ; set ; } public string shidu { get ; set ; } public string fengxiang { get ; set ; } public environment environment { get ; set ; } public alarm alarm { get ; set ; } public List<weather> forecast { set ; get ; } } public class environment { public string aqi { get ; set ; } public string pm25 { get ; set ; } public string suggest { get ; set ; } public string quality { get ; set ; } public string MajorPollutants { get ; set ; } public string time { get ; set ; } } public class alarm { public string cityName { get ; set ; } public string alarmType { get ; set ; } public string alarmDegree { get ; set ; } public string alarmText { get ; set ; } public string alarm_details { get ; set ; } public string standard { get ; set ; } public string suggest { get ; set ; } } public class weather { public string date { get ; set ; } public string high { get ; set ; } public string low { get ; set ; } public climate day { get ; set ; } public climate night { get ; set ; } } public class climate { public string type { get ; set ; } public string fengxiang { get ; set ; } public string fengli { get ; set ; } } |
分类:
C#
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
2018-03-14 SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)
2018-03-14 sql server中QUOTENAME()函数的用法
2016-03-14 经典SQL语句大全