`
Freekingismy
  • 浏览: 17361 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

C# HttpWebRequest方式获取《中国天气》天气预报代码【转】

阅读更多
    《中国天气网》是国家气象局负责的天气网站,确切说是国家气象局的公共气象服务中心负责网站的运行和维护,上面的天气预报信息一般直接来源于中央气象台,所以和其他相比算是比较准确可靠的了。
     在考虑获取天气代码上,采用了《中国天气网的信息》网上很多方法都是直接使用网页嵌套的方式来实现,对于Web App 这是非常正确的,要不然获取的就是服务器所在地的天气状况,本例主要用在WinForm上面;
     代码可以自动获取当前IP所在的城市,然后通过城市ID来获取当前城市的天气情况;

代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
namespace BlogPromotion
{
    /// <summary>
    /// 获取当地的天气状况
    /// </summary>
    public class WeatherGet
    {
        /// <summary>
        /// 获取城市代码
        /// </summary>
        /// <returns></returns>
        private static string GetCityId()
        {
            HttpWebRequest wNetr = (HttpWebRequest)HttpWebRequest.Create("http://61.4.185.48:81/g/");
            HttpWebResponse wNetp = (HttpWebResponse)wNetr.GetResponse();
            wNetr.ContentType = "text/html";
            wNetr.Method = "Get";
            Stream Streams = wNetp.GetResponseStream();
            StreamReader Reads = new StreamReader(Streams, Encoding.UTF8);
            String ReCode = Reads.ReadToEnd();
            //关闭暂时不适用的资源
            Reads.Dispose();
            Streams.Dispose();
            wNetp.Close();
            //分析返回代码
            String[] Temp = ReCode.Split(';');
            ReCode = Temp[1].Replace("var id=", "");
            return ReCode;
        }
        /// <summary>
        /// 获取城市的天气状况
        /// </summary>
        /// <returns></returns>
        public static string GetWeather()
        {
            string wUrl = string.Format("http://m.weather.com.cn/data/{0}.html",GetCityId());
            HttpWebRequest wNetr = (HttpWebRequest)HttpWebRequest.Create(wUrl);
            HttpWebResponse wNetp = (HttpWebResponse)wNetr.GetResponse();
            wNetr.ContentType = "text/html";
            wNetr.Method = "Get";
            Stream Streams = wNetp.GetResponseStream();
            StreamReader Reads = new StreamReader(Streams, Encoding.UTF8);
            String ReCode = Reads.ReadToEnd();
            //关闭暂时不适用的资源
            Reads.Dispose();
            Streams.Dispose();
            wNetp.Close();
            //分析返回代码
            String[] Splits = new String[] { "\"",",","\"" };
            String[] Temp = ReCode.Split(Splits,StringSplitOptions.RemoveEmptyEntries);
            ReCode = String.Format("天气:{0} {1} {2}",Temp[5],Temp[62],Temp[26]);
            return ReCode;
        }     
    }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics