日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

根据ip地址获得天气预报

發布時間:2025/3/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 根据ip地址获得天气预报 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?????根據訪問者的ip地址獲得當地的天氣情況,最簡單的一種方法就是加一個iframe框架方法如下:

<iframe src="http://m.weather.com.cn/m/pn12/weather.htm" frameborder="0" width="200px" height="110px" scrolling="no"></iframe>

如果想得到比較詳細的頁面可以點擊這個網址:http://weather.xixik.com/

這樣方法雖然簡單,但是有一個很大的缺點就是在IE瀏覽器下它的背景色是白色的(谷歌瀏覽器的背景色是透明的)如果你想將他顯示在有背景色的條上會出現這種效果:

為了解決這種缺點可以使用第二種方法通過天氣預報的WebService接口調用:

思想:1、先找確定訪問者所在的地區。

??????????????????? string strResponse = GetPageData("http://www.123cha.com/");
??????????????????? Match match = Regex.Match(strResponse, @"來自:&nbsp;&nbsp;(.+)&nbsp;");
??????????????????? string[] addresses = match.Groups[1].Value.Replace("&nbsp;", " ").Split(' ');//獲得Ip所在的城市
??????????????????? string address = "北京";
??????????????????? int n = 0;
??????????????????? if (addresses.Length >= 3)
??????????????????? {
??????????????????????? n = 1;
??????????????????? }
??????????????????? address = addresses[n].Substring(0, addresses[n].Length - 1);

?????????? 2、添加WebService引用:

      ???添加webService的方法:

       一、添加Web引用(如果是2010添加服務引用)

??????????????????

      ?? 二、在輸入框中輸入下面的網址:

       http://www.webxml.com.cn/WebServices/WeatherWebService.asmx? 然后點擊前往,記下引用名(引用名可以自己改寫)

       

?????????????????

?????????????????? 最后代碼:
??????????????????? Weather.WeatherWebService w = new Weather.WeatherWebService();
??????????????????? //把webservice當做一個類來操作?
??????????????????? string[] s = new string[23];//聲明string數組存放返回結果?
??????????????????? string city = address;//獲得文本框錄入的查詢城市?
??????????????????? s = w.getWeatherbyCityName(city);
??????????????????? //以文本框內容為變量實現方法getWeatherbyCityName?
??????????????????? if (s[8] == "")
??????????????????? {
??????????????????????? //MessageBox.Show("暫時不支持您查詢的城市");
??????????????????? }
??????????????????? else
??????????????????? {
??????????????????????? string st = s[10];
??????????????????? }

?提升:

1、這樣下來雖然效果實現了,但是加載速度很慢。為了不讓它影響其它頁面的加載速度,我將獲取天氣預報這塊單獨寫了一個頁面。然后在需要調用天氣的預報的頁面加了一個Frame框架。這樣天氣預報雖然加載慢但是卻不會影響其他頁面。

2、有好幾個頁面都用到這個天氣預報,我沒必要換一個頁面就去用WebService去調用天氣情況。針對這樣情況,我采取只第一次加載的方法。然后將獲得天氣預報放到Cookie里這樣其他頁面再使用的時候我可以直接從cookie里調用省了很多時間。

具體代碼如下:

? string content = "<table><tr id='temprature' runat='server'><td>" + dt + "&nbsp;" + week + "<td>" + address + ":&nbsp;" + s[10] + "</td></tr></table>";
??????????????????? HttpCookie wea = new HttpCookie("weather");
??????????????????? wea.Values["date"] = dt;
??????????????????? wea.Values["week"] = week;
??????????????????? wea.Values["address"] = address;
??????????????????? wea.Values["tian"] = s[10];
??????????????????? Response.Cookies.Add(wea);
??????????????????? temprature.InnerHtml = content;

?

if (Request.Cookies["weather"] != null)
??????????????? {
??????????????????? HttpCookie wea = Request.Cookies["weather"];
??????????????????? string dt = wea.Values["date"];
??????????????????? string week=wea.Values["week"];
??????????????????? string address=wea.Values["address"];
??????????????????? string tian=wea.Values["tian"];
??????????????????? string content = "<table><tr id='temprature' runat='server'><td>" + dt + "&nbsp;" + week + "<td>" + address + ":&nbsp;" + tian + "</td></tr></table>";
??????????????????? temprature.InnerHtml = content;

?

??????????????? }

這樣速度加快了很多。

?

轉載于:https://www.cnblogs.com/honghong75042/archive/2012/04/12/2443532.html

總結

以上是生活随笔為你收集整理的根据ip地址获得天气预报的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。