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;
}
}
}