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

  

转载于:https://www.cnblogs.com/lgx5/p/10528845.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值