C#编写的获取天气信息

来源:互联网 发布:淘宝大学鹰图学院 编辑:程序博客网 时间:2024/05/17 08:06

根据一位网友写的java天气信息获取改编的,参考http://blog.csdn.net/lanpiao_87/article/details/41556265

class Weather    {        public static string GetWeatherXml(string source,int day) {            string dst = "";            string requestUrl = "http://php.weather.sina.com.cn/xml.php?city={keyWord}&password=DJOYnieT8234jlsK&day=0";//获取当天天气            requestUrl = requestUrl.Replace("{keyWord}", HttpRequestUtil.UrlEncode(source, "GBK"));             dst = HttpRequestUtil.HttpRequest(requestUrl);            return dst;        }        public static string GetWeatherInfo(string source) {            StringBuilder buffer = new StringBuilder();            buffer.Append(source).Append("今天的天气情况如下: \n\n");            string weatherXml = GetWeatherXml(source,0);            if (null == weatherXml || "" == weatherXml) {                return "";            }            Console.WriteLine(weatherXml);            XmlDocument xmldoc = new XmlDocument();            xmldoc.Load(new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(weatherXml)));            XmlNode node_status1 = xmldoc.SelectSingleNode("/Profiles/Weather/status1");            XmlNode node_direction1 = xmldoc.SelectSingleNode("/Profiles/Weather/direction1");            XmlNode node_temperature1 = xmldoc.SelectSingleNode("/Profiles/Weather/temperature1");            XmlNode node_temperature2 = xmldoc.SelectSingleNode("/Profiles/Weather/temperature2");            XmlNode node_ssd_l = xmldoc.SelectSingleNode("/Profiles/Weather/ssd_l");            XmlNode node_yd_s = xmldoc.SelectSingleNode("/Profiles/Weather/yd_s");            XmlNode node_savedate_weather = xmldoc.SelectSingleNode("/Profiles/Weather/savedate_weather");            XmlNode node_ssd_s = xmldoc.SelectSingleNode("/Profiles/Weather/ssd_s");            string status1 = node_status1.InnerText;            string savedate_weather = node_savedate_weather.InnerText;            string direction1 = node_direction1.InnerText;            string temperature1 = node_temperature1.InnerText;            string temperature2 = node_temperature2.InnerText;            string ssd_l = node_ssd_l.InnerText;            string yd_s = node_yd_s.InnerText;            string ssd_s = node_ssd_s.InnerText;            buffer.Append(savedate_weather).Append("\n").Append(status1).Append("  ").Append(direction1).Append("  ")                .Append(temperature2).Append("°C- ").Append(temperature1).Append("°C ").Append(ssd_l).Append("\n")                .Append("温馨提示:").Append(ssd_s);                       return (null == buffer ? "" : buffer.ToString()); ;        }        static void Main(string[] args) {            string str = GetWeatherInfo("上海");            Console.WriteLine(str);        }    }

class HttpRequestUtil    {        public static string HttpRequest(string requestUrl) {            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUrl);            request.Method = "GET";            request.ContentType = "application/x-www-form-urlencoded";            HttpWebResponse response = (HttpWebResponse)request.GetResponse();            Stream myResponseStream = response.GetResponseStream();            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));            string retString = myStreamReader.ReadToEnd();            myStreamReader.Close();            myResponseStream.Close();            return retString;        }        /// <summary>        /// 转码        /// </summary>        /// <param name="source"></param>        /// <param name="encode"></param>        /// <returns></returns>        public static string UrlEncode(string source, string encode) {            string result = source;            try            {                Encoding encoding = Encoding.GetEncoding(encode);                result = UrlEncoding(source, encoding);            }            catch (Exception)            {                throw;            }            return result;        }        /// <summary>        /// 由java编码转换为C#编码的方法        /// </summary>        /// <param name="temp"></param>        /// <param name="encoding"></param>        /// <returns></returns>        private static string UrlEncoding(string temp, Encoding encoding)        {            StringBuilder stringBuilder = new StringBuilder();            for (int i = 0; i < temp.Length; i++)            {                string t = temp[i].ToString();                string k = HttpUtility.UrlEncode(t, encoding);                if (t == k)                {                    stringBuilder.Append(t);                }                else                {                    stringBuilder.Append(k.ToUpper());                }            }            return stringBuilder.ToString();        }    }

运行效果:


0 0
原创粉丝点击