天气插件的替换

  以前在网页中加入过天气的插件,但朋友一直说,为何这一个多月以来,天天的天气怎么都一样的?而且跟实际网上查找到的天气信息不一样。于是我个人就想,是否服务器不能联网更新?但朋友说绝可以,而且还是在服务器上直接打开天气网,发现所以城市的数据根本与网页上的不一致。起初我不太相信,因为数据是从天气网下载下来的。然后每二个小时自动更新一次。于是QQ连过去一看,最新的数据更新是2014.3.4。于是网上一查,发现是天气网停止维护了此数据。想到此,不禁唉的一声,原因你懂得,于是我就跟朋友说,这功能只能取消了。但朋友明显不高兴,说这一功能一直有用,突然不能用了,用户不接受。没办法,只能原本把地址链接过去。但这样一来,每个用户都必须要有上网的权限。这样也不太现实,不知道现在各位采用的方案是? 在此与大家分享一下主要的代码。看各位是否有更好的建议?

原先的方案

 public static string getWeather()
        {
            string path = HttpContext.Current.Server.MapPath("~/weather.txt");
            DateTime now = DateTime.Now;
            DateTime lastUpdTime = DateTime.Now;
            if (File.Exists(path))
            {
                lastUpdTime= File.GetLastWriteTime(path);
            }
            else
            {
                File.Create(path);
            }
            if (now.Subtract(lastUpdTime).Minutes > 120) 

            {
                string UrlString = "http://m.weather.com.cn/data/101280301.html"

                string contents = "";
                WebRequest Wrequest = WebRequest.Create(UrlString);
                Wrequest.Credentials = CredentialCache.DefaultCredentials;
                HttpWebResponse Wresponse = (HttpWebResponse)Wrequest.GetResponse();
                Stream responseStream = Wresponse.GetResponseStream();
                StreamReader reader = new StreamReader(responseStream);
                contents = reader.ReadToEnd();
                reader.Close();
                responseStream.Close();
                Wresponse.Close();
                File.WriteAllText(path, contents);

            }
            return File.ReadAllText(path);
        }

然后把文件内容发送给前台: this.Page.RegisterClientScriptBlock("data", "<script> var jsData=" + getWeather()+ "</script>");

现在的方案只能是在前台直接引用

 <iframe id="weather" frameborder="0"  src="http://m.weather.com.cn/m/pn11/weather.htm" height="60" width="500" ></iframe>

但这样要求每个客户端都要上网,这显然与要求不一致,请问各位现在有什么好办法呢?

原文地址:https://www.cnblogs.com/Geton/p/3662730.html