ASP.Net WebServie简单应用之天气预报例子
使用 Visual Studio和.Net来使用WebService是很方便的。下面做了一个小例子,通过一个提供气预报的WebService网址来简单实现天气预报这么一个功能:http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx 。
在实现这么一个小功能前看一下 WebService的定义
Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。
1、提供相关服务的WebService网址
View Code
天气预报Web服务,数据来源于中国气象局 Endpoint :http://www.webxml.com.cn/WebServices/WeatherWebService.asmx Disco :http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?disco WSDL :http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl IP地址来源搜索 WEB 服务(是目前最完整的IP地址数据) Endpoint :http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx Disco :http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?disco WSDL :http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl 随机英文、数字和中文简体字 WEB 服务 Endpoint :http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx Disco :http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx?disco WSDL :http://www.webxml.com.cn/WebServices/RandomFontsWebService.asmx?wsdl 中国邮政编码 <-> 地址信息双向查询/搜索 WEB 服务 Endpoint :http://www.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx Disco :http://www.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx?disco WSDL :http://www.webxml.com.cn/WebServices/ChinaZipSearchWebService.asmx?wsdl 验证码图片 WEB 服务 支持中文、字母、数字 图像和多媒体 Endpoint :http://www.webxml.com.cn/WebServices/ValidateCodeWebService.asmx Disco :http://www.webxml.com.cn/WebServices/ValidateCodeWebService.asmx?disco WSDL :http://www.webxml.com.cn/WebServices/ValidateCodeWebService.asmx?wsdl Email 电子邮件地址验证 WEB 服务 Endpoint :http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx Disco :http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx?disco WSDL :http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx?wsdl 中文简体字 <->繁体字转换 WEB 服务 Endpoint :http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx Disco :http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?disco WSDL :http://www.webxml.com.cn/WebServices/TraditionalSimplifiedWebService.asmx?wsdl 中文 <-> 英文双向翻译 WEB 服务 Endpoint :http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx Disco :http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx?disco WSDL :http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx?wsdl 火车时刻表 WEB 服务 (第六次提速最新列车时刻表) Endpoint :http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx Disco :http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx?disco WSDL :http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx?wsdl 中国股票行情数据 WEB 服务(支持深圳和上海股市的基金、债券和股票) Endpoint :http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx Disco :http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx?disco WSDL :http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx?wsdl 即时外汇汇率数据 WEB 服务 Endpoint :http://www.webxml.com.cn/WebServices/ExchangeRateWebService.asmx Disco :http://www.webxml.com.cn/WebServices/ExchangeRateWebService.asmx?disco WSDL :http://www.webxml.com.cn/WebServices/ExchangeRateWebService.asmx?wsdl 腾讯QQ在线状态 WEB 服务 Endpoint :http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx Disco :http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?disco WSDL :http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl 中国电视节目预告(电视节目表) WEB 服务 Endpoint :http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx Disco :http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?disco WSDL :http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl 外汇-人民币即时报价 WEB 服务 Endpoint :http://www.webxml.com.cn/WebServices/ForexRmbRateWebService.asmx Disco :http://www.webxml.com.cn/WebServices/ForexRmbRateWebService.asmx?disco WSDL :http://www.webxml.com.cn/WebServices/ForexRmbRateWebService.asmx?wsdl 中国股票行情分时走势预览缩略图 WEB 服务 Endpoint : http://www.webxml.com.cn/webservices/ChinaStockSmallImageWS.asmx Disco : http://www.webxml.com.cn/webservices/ChinaStockSmallImageWS.asmx?disco WSDL : http://www.webxml.com.cn/webservices/ChinaStockSmallImageWS.asmx?wsdl 国内飞机航班时刻表 WEB 服务 Endpoint :http://www.webxml.com.cn/webservices/DomesticAirline.asmx Disco : http://www.webxml.com.cn/webservices/DomesticAirline.asmx?disco WSDL : http://www.webxml.com.cn/webservices/DomesticAirline.asmx?wsdl 中国开放式基金数据 WEB 服务 Endpoint :http://www.webxml.com.cn/WebServices/ChinaOpenFundWS.asmx Disco : http://www.webxml.com.cn/WebServices/ChinaOpenFundWS.asmx?disco WSDL :http://www.webxml.com.cn/WebServices/ChinaOpenFundWS.asmx?wsdl 股票行情数据 WEB 服务(支持香港、深圳、上海基金、债券和股票;支持多股票同时查询) Endpoint :http://www.webxml.com.cn/WebServices/StockInfoWS.asmx Disco :http://www.webxml.com.cn/WebServices/StockInfoWS.asmx?disco WSDL :http://www.webxml.com.cn/WebServices/StockInfoWS.asmx?wsdl
2、实现过程
建一个WebServiceDemo的ASP.NET项目,接着右键添加WEB引用
新建一个Demo.aspx页面,并接着拉两个DropDownList,查看一下前端的页面代码:
<body> <form id="form1" runat="server"> <div> <asp:DropDownList ID="DdlProvice" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropRegionCountry_SelectedIndexChanged"> </asp:DropDownList> <asp:DropDownList ID="ddlCity" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlCity_SelectedIndexChanged"> </asp:DropDownList> <br /> <br /> <asp:Literal ID="Literal1" runat="server"></asp:Literal> </div> </form> </body>
后端的代码实现:
View Code
using System.Web.UI.WebControls; namespace WebServiceDemo { public partial class Demo1 : System.Web.UI.Page { cn.com.webxml.webservice.WeatherWS w = new cn.com.webxml.webservice.WeatherWS(); protected void Page_Load(object sender, EventArgs e) { string[] Provinces = w.getRegionProvince(); foreach (var provice in Provinces) { string[] item = provice.Split(','); string name = item[0]; string value = item[1]; DdlProvice.Items.Add(new ListItem(name, value)); } } protected void DropRegionCountry_SelectedIndexChanged(object sender, EventArgs e) { ddlCity.Items.Clear(); string[] Citys = w.getSupportCityString(DdlProvice.SelectedValue); foreach (var city in Citys) { string[] item = city.Split(','); string name = item[0]; string value = item[1]; ddlCity.Items.Add(new ListItem(name, value)); } } protected void ddlCity_SelectedIndexChanged(object sender, EventArgs e) { string[] Weathers = w.getWeather(ddlCity.SelectedValue, ""); string result = ""; foreach (var item in Weathers) { result += item + "<br/>"; } Literal1.Text = result; } } }
因为感觉代码比较简单,所以不作解释了。最后效果图: