首页  ·  知识 ·  编程语言
用C#读取sina天气预报到wap页面
佚名  www.chinaitlab.com  .NET  编辑:dezai  图片来源:网络
<%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" <

<%@ Register TagPrefix="mobile"
            Namespace="System.Web.UI.MobileControls"
            Assembly="System.Web.Mobile" %><%@ Page language="c#"
            Codebehind="weather.aspx.cs" Inherits="goodwap.life.weather"
            AutoEventWireup="false" %><mobile:form id="Form1" runat="server">
            <FONT face="宋体">
            <mobile:Label id="Label3" runat="server"
            Font-Bold="True">【生活资讯】</mobile:Label>
            <mobile:Label id="Label1" runat="server"
            Font-Italic="True">==天气预报==</mobile:Label>
            <mobile:Label id="l_date" runat="server"></mobile:Label>
            <mobile:Label id="l_city" runat="server"></mobile:Label>
            <mobile:Label id="l_wea" runat="server"></mobile:Label>
            <mobile:Label id="l_sky" runat="server"></mobile:Label>
            <mobile:Label id="l_w1" runat="server"></mobile:Label>
            <mobile:Label id="l_w2" runat="server"></mobile:Label>
            <mobile:Label id="l_w3" runat="server"></mobile:Label>
            <mobile:Label id="Label2" runat="server">【请选择城市名】:</mobile:Label>
            <mobile:SelectionList id="s_weather" runat="server">
            <Item Value="深圳" Text="深圳" Selected="True"></Item>
            <Item Value="广州" Text="广州"></Item>
            <Item Value="上海" Text="上海"></Item>
            <Item Value="北京" Text="北京"></Item>
            <Item Value="天津" Text="天津"></Item>
            <Item Value="武汉" Text="武汉"></Item>
            <Item Value="重庆" Text="重庆"></Item>
            <Item Value="成都" Text="成都"></Item>
            <Item Value="南京" Text="南京"></Item>
            <Item Value="香港" Text="香港"></Item>
            <Item Value="澳门" Text="澳门"></Item>
            </mobile:SelectionList>
            <mobile:Command id="Command1" runat="server">查 询</mobile:Command>
            <mobile:Link id="Link1" runat="server"
            NavigateUrl="../default.aspx#Goodview">首
            页</mobile:Link></FONT></mobile:form>

            public class weather : System.Web.UI.MobileControls.MobilePage
            ...{
            protected System.Web.UI.MobileControls.Label Label1;
            protected System.Web.UI.MobileControls.Label Label2;
            protected System.Web.UI.MobileControls.SelectionList s_weather;
            protected System.Web.UI.MobileControls.Label l_date;
            protected System.Web.UI.MobileControls.Label l_city;
            protected System.Web.UI.MobileControls.Label l_wea;
            protected System.Web.UI.MobileControls.Label l_sky;
            protected System.Web.UI.MobileControls.Label l_w1;
            protected System.Web.UI.MobileControls.Label l_w2;
            protected System.Web.UI.MobileControls.Label l_w3;
            protected System.Web.UI.MobileControls.Link Link1;
            protected System.Web.UI.MobileControls.Command Command1;
            protected System.Web.UI.MobileControls.Label Label3;
            protected System.Web.UI.MobileControls.Form Form1;

            private void Page_Load(object sender, System.EventArgs e)
            ...{
            // 在此处放置用户代码以初始化页面
            if (!Page.IsPostBack)
            ...{
            string city = "深圳";
            int start,stop;
            string weather1,weather2,wea;
            string wea_city = weather_city(city);
            wea_city = wea_city.Replace(" ","");

            start = wea_city.IndexOf("",0,wea_city.Length);
            stop = wea_city.IndexOf("
", start);
            weather1 = wea_city.Substring(start, stop-start).Trim() + " ";
            weather1 = weather1.Substring(3,8).Trim();

            start =
            wea_city.IndexOf("",0,wea_city.Length);
            stop = wea_city.IndexOf("℃",start) + 40;
            weather2 = wea_city.Substring(start, stop-start);
            weather2 = weather2.Substring(stop-start-42,40).Trim();
            weather2 = weather2.Replace(" ","");

            start = wea_city.IndexOf("", 0,
            wea_city.Length);
            stop = wea_city.IndexOf("
",start);
            wea = wea_city.Substring(start,stop-start);
            wea = wea.Substring(22,wea.Length-22) + "kbrk";
            wea = wea.Replace(" ", "");
            wea = wea.Replace(">", "k");
            wea = wea.Replace("<", "k");
            wea = wea.Replace("kbrk", "k");
            string [] wall = null;
            char[] seperator = ...{'k'};
            wall = wea.Split(seperator);

            /**///////////////////////////////////////
            l_city.Text = "[城市]:" + city;
            l_wea.Text = "[天气]:" + weather1;
            l_sky.Text = "[温度]:" + weather2;
            /**////////
            l_date.Text = wall[0];
            l_w1.Text = wall[1];
            l_w2.Text = wall[2];
            l_w3.Text = wall[3];
            }
            }

            Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
            override protected void OnInit(EventArgs e)
            ...{
            //
            // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
            //
            InitializeComponent();
            base.OnInit(e);
            }

            /**////


            /// 设计器支持所需的方法 - 不要使用代码编辑器修改
            /// 此方法的内容。
            ///

            private void InitializeComponent()
            ...{
            this.Command1.Click += new System.EventHandler(this.Command1_Click);
            this.Load += new System.EventHandler(this.Page_Load);

            }
            #endregion

            private void Command1_Click(object sender, System.EventArgs e)
            ...{
            string city = s_weather.Selection.Value.Trim();
            int start,stop;
            string weather1,weather2,wea;
            string wea_city = weather_city(city);
            wea_city = wea_city.Replace(" ","");

            start = wea_city.IndexOf("",0,wea_city.Length);
            stop = wea_city.IndexOf("
", start);
            weather1 = wea_city.Substring(start, stop-start).Trim() + " ";
            weather1 = weather1.Substring(3,8).Trim();

            start =
            wea_city.IndexOf("",0,wea_city.Length);
            stop = wea_city.IndexOf("℃",start) + 40;
            weather2 = wea_city.Substring(start, stop-start);
            weather2 = weather2.Substring(stop-start-42,40).Trim();
            weather2 = weather2.Replace(" ","");

            start = wea_city.IndexOf("", 0,
            wea_city.Length);
            stop = wea_city.IndexOf("
",start);
            wea = wea_city.Substring(start,stop-start);
            wea = wea.Substring(22,wea.Length-22) + "kbrk";
            wea = wea.Replace(" ", "");
            wea = wea.Replace(">", "k");
            wea = wea.Replace("<", "k");
            wea = wea.Replace("kbrk", "k");
            string [] wall = null;
            char[] seperator = ...{'k'};
            wall = wea.Split(seperator);

            /**///////////////////////////////////////
            l_city.Text = "[城市]:" + city;
            l_wea.Text = "[天气]:" + weather1;
            l_sky.Text = "[温度]:" + weather2;
            /**////////
            l_date.Text = wall[0];
            l_w1.Text = wall[1];
            l_w2.Text = wall[2];
            l_w3.Text = wall[3];
            }

            public string weather_city(string city)
            ...{
            string temp = null;
            try
            ...{
            string strURL =
            "http://weather.news.sina.com.cn/cgi-bin/figureWeather/search.cgi";
            HttpWebRequest request;
            request = (HttpWebRequest)WebRequest.Create(strURL);
            request.Method="POST"; //Post请求方式
            request.ContentType="application/x-www-form-urlencoded"; //内容类型
            string paraUrlCoded = System.Web.HttpUtility.UrlEncode("city");
            //参数经过URL编码
            paraUrlCoded = paraUrlCoded + "=" +
            System.Web.HttpUtility.UrlEncode(city,
            System.Text.Encoding.GetEncoding("GB2312"));
            byte[] payload;
            payload =
            System.Text.Encoding.GetEncoding("GB2312").GetBytes(paraUrlCoded);
            //将URL编码后的字符串转化为字节
            request.ContentLength = payload.Length; //设置请求的ContentLength
            Stream writer = request.GetRequestStream(); //获得请求流
            writer.Write(payload,0,payload.Length); //将请求参数写入流
            writer.Close(); //关闭请求流
            HttpWebResponse response;
            response = (HttpWebResponse)request.GetResponse(); //获得响应流
            Stream s;
            s = response.GetResponseStream();
            StreamReader objReader = new
            StreamReader(s,System.Text.Encoding.GetEncoding("GB2312"));
            string HTML = "";
            string sLine = "";
            int i = 0;
            while (sLine!=null)
            ...{
            i++;
            sLine = objReader.ReadLine();
            if (sLine!=null)
            HTML += sLine;
            }
            HTML = HTML.Replace("<","<");
            HTML = HTML.Replace(">",">");
            int start,stop;
            start = HTML.IndexOf("            src="http://image2.sina.com.cn/dy/weather/images/figure/",0,HTML.Length);
            stop = HTML.IndexOf("            background=http://image2.sina.com.cn/dy/weather/images",start);
            temp = HTML.Substring(start, stop - start);
            }
            catch (Exception x)
            ...{
            }
            return temp;
            }
            }

本文作者:佚名 来源:www.chinaitlab.com
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读