• C#获取中国天气网免费天气预报信息


    中国天气网接口地址:”http://wthrcdn.etouch.cn/WeatherApi?citykey=” + weatherCityCode(为城市code); 

    下面是转化过程中我们需要用到的方法(序列化的实体类在文章结尾附)

       string weatherInfoUrl = "http://wthrcdn.etouch.cn/WeatherApi?citykey=" + weatherCityCode;
       string weatherstr = getHtml2(weatherInfoUrl);
       resp tempInfo = XmlDeSeralizer<resp>(weatherstr);
    

      

    转化过程中需要用到的方法

            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;
                }
            }
    

    天气实体类

        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; }
        }
    

      

  • 相关阅读:
    由前序和中序遍历结果构建二叉树
    Java学习笔记数组与ArrayList
    Java学习笔记字符串
    Java学习笔记关于默认类型或访问权限的总结
    javascript学习笔记之事件和事件处理
    2010年2月1日学习笔记
    Web.config保存整个站点的设置
    ANT的十五大最佳实践
    配置ajaxToolkit的方法【转】
    Java学习笔记Iterator迭代器(Ps.instanceof的用法)
  • 原文地址:https://www.cnblogs.com/lgx5/p/10528845.html
Copyright © 2020-2023  润新知