ASP.NET的实时天气及24小时天气预报(C#)
你当前的位置:烁空 --> 技术文档全集

 ASP.NET的实时天气及24小时天气预报(C#) 修改其中的URL获得其他城市的天气情况
如广州为:
HTTP://WEATHER.YAHOO.COM/FORECAST/CHXX0037_C.HTML
注意仅适用于获得YAHOO上的天气预报


GETWEATHER.ASPX
-----------------------------------

<%@ PAGE LANGUAGE="C#" CODEBEHIND="GETWEATHER.ASPX.CS" AUTOEVENTWIREUP="FALSE" INHERITS="TEST.GETWEATHER" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN" >
<HTML>
    <HEAD>
        <TITLE>GETWEATHER</TITLE>
        <META NAME="GENERATOR" CONTENT="MICROSOFT VISUAL STUDIO 7.0">
        <META NAME="CODE_LANGUAGE" CONTENT="C#">
        <META NAME="VS_DEFAULTCLIENTSCRIPT" CONTENT="JAVASCRIPT">
        <META NAME="VS_TARGETSCHEMA" CONTENT="HTTP://SCHEMAS.MICROSOFT.COM/INTELLISENSE/IE5">
    </HEAD>
    <BODY>
        <FORM ID="GETWEATHER" METHOD="POST" RUNAT="SERVER">
            <FONT FACE="宋体">
                <P>
                    <ASP:LABEL ID="LBLWEATHER" RUNAT="SERVER">WEATHER</ASP:LABEL></P>
                <P>
                    <ASP:BUTTON ID="BTNGET" RUNAT="SERVER" TEXT="GET WEATHER"></ASP:BUTTON></P>
                <P>
                    <ASP:LABEL ID="WEATHER2" RUNAT="SERVER">24小时天气</ASP:LABEL></P>
                <P>
                    <ASP:BUTTON ID="BTNGET2" RUNAT="SERVER" TEXT="天气预报"></ASP:BUTTON></P>
            </FONT>
        </FORM>
    </BODY>
</HTML>

 

 

GETWEATHER.ASPX.CS
---------------------------------------

USING SYSTEM;
USING SYSTEM.COLLECTIONS;
USING SYSTEM.COMPONENTMODEL;
USING SYSTEM.DATA;
USING SYSTEM.DRAWING;
USING SYSTEM.WEB;
USING SYSTEM.WEB.SESSIONSTATE;
USING SYSTEM.WEB.UI;
USING SYSTEM.WEB.UI.WEBCONTROLS;
USING SYSTEM.WEB.UI.HTMLCONTROLS;
USING SYSTEM.NET;
USING SYSTEM.IO;

NAMESPACE TEST
{

    PUBLIC CLASS GETWEATHER : SYSTEM.WEB.UI.PAGE
    {
        PROTECTED SYSTEM.WEB.UI.WEBCONTROLS.LABEL LBLWEATHER;
        PROTECTED SYSTEM.WEB.UI.WEBCONTROLS.LABEL WEATHER2;
        PROTECTED SYSTEM.WEB.UI.WEBCONTROLS.BUTTON BTNGET2;
        PROTECTED SYSTEM.WEB.UI.WEBCONTROLS.BUTTON BTNGET;
    
        PRIVATE VOID PAGE_LOAD(OBJECT SENDER, SYSTEM.EVENTARGS E)
        {
            // PUT USER CODE TO INITIALIZE THE PAGE HERE
        }

        #REGION WEB FORM DESIGNER GENERATED CODE
        OVERRIDE PROTECTED VOID ONINIT(EVENTARGS E)
        {
            //
            // CODEGEN: THIS CALL IS REQUIRED BY THE ASP.NET WEB FORM DESIGNER.
            //
            INITIALIZECOMPONENT();
            BASE.ONINIT(E);
        }
        
        /// <SUMMARY>
        /// REQUIRED METHOD FOR DESIGNER SUPPORT - DO NOT MODIFY
        /// THE CONTENTS OF THIS METHOD WITH THE CODE EDITOR.
        /// </SUMMARY>
        PRIVATE VOID INITIALIZECOMPONENT()
        {    
            THIS.BTNGET.CLICK += NEW SYSTEM.EVENTHANDLER(THIS.BTNGET_CLICK);
            THIS.BTNGET2.CLICK += NEW SYSTEM.EVENTHANDLER(THIS.BTNGET2_CLICK);
            THIS.LOAD += NEW SYSTEM.EVENTHANDLER(THIS.PAGE_LOAD);

        }
        #ENDREGION

        PRIVATE VOID BTNGET_CLICK(OBJECT SENDER, SYSTEM.EVENTARGS E)
        {

            WEBREQUEST WREQ=WEBREQUEST.CREATE("HTTP://WEATHER.YAHOO.COM/FORECAST/CHXX0037_C.HTML");
                
            HTTPWEBRESPONSE WRESP=(HTTPWEBRESPONSE)WREQ.GETRESPONSE();
                    
            STRING HTML ="";
            STREAM S=WRESP.GETRESPONSESTREAM();
                
            STREAMREADER OBJREADER = NEW STREAMREADER(S);

            STRING SLINE = "";
            INT I = 0;

            WHILE (SLINE!=NULL)
            {
                I++;
                SLINE = OBJREADER.READLINE();
                IF (SLINE!=NULL)
                    HTML += SLINE;
            }
                
            STRING TEMP= "";
            INT START,STOP;
                            
            START = HTML.INDEXOF("<!-- CURCON-->",0,HTML.LENGTH);

            STOP = HTML.INDEXOF("<!-- END CURCON-->",0,HTML.LENGTH);

            TEMP = HTML.SUBSTRING(START, STOP - START);
            START = TEMP.INDEXOF("<B>");
            STOP = TEMP.INDEXOF("</B>");
            
            STRING DEGREE = TEMP.SUBSTRING(START+3,STOP - START -3);

            START = TEMP.INDEXOF("<IMG");
            STOP = TEMP.INDEXOF("</TD>",START);

            STRING IMG = TEMP.SUBSTRING(START,STOP - START);
            LBLWEATHER.TEXT = DEGREE + "<BR>" + IMG;
                
        }

        PRIVATE VOID BTNGET2_CLICK(OBJECT SENDER, SYSTEM.EVENTARGS E)
        {
            WEBREQUEST WREQ=WEBREQUEST.CREATE("HTTP://CN.WEATHER.YAHOO.COM/CHXX/CHXX0037/INDEX_C.HTML");
                
            HTTPWEBRESPONSE WRESP=(HTTPWEBRESPONSE)WREQ.GETRESPONSE();
                    
            STRING HTML ="";
            STREAM S=WRESP.GETRESPONSESTREAM();
                
            STREAMREADER OBJREADER = NEW STREAMREADER(S,SYSTEM.TEXT.ENCODING.GETENCODING("GB2312"));
    

            STRING SLINE = "";
            INT I = 0;

            WHILE (SLINE!=NULL)
            {
                I++;
                SLINE = OBJREADER.READLINE();
                IF (SLINE!=NULL)
                    HTML += SLINE;
            }
                
            STRING TEMP= "";
            INT START,STOP;
                            
            START = HTML.INDEXOF("<TABLE BORDER=0 CELLPADDING=2 CELLSPACING=1 BGCOLOR=9999CC WIDTH="85%">",0,HTML.LENGTH);

            STOP = HTML.INDEXOF("</TABLE>",START)+8;
            

            TEMP = HTML.SUBSTRING(START, STOP - START);
            WEATHER2.TEXT = TEMP;        
        }
    }