用WebService实现调用新浪的天气预报功能

用WebService实现调用新浪的天气预报功能

用WebService实现天气预报的查询
这是获取天气Web服务代码,转自书上。
1。请在网站根目录下添加一个“Web服务”,命名为“Weather”,注意别建成aspx 页面。
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Net;
using System.IO;


/// <summary>
/// Weather 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Weather : System.Web.Services.WebService {

    public Weather () {

        //如果使用设计的组件,请取消注释以下行
        //InitializeComponent();
    }

    [WebMethod]
  
    public string GetWeather(string city)
    {
        string weacherhtml = string.Empty;
        //转换输入参数的编码类型
        string mycity = System.Web.HttpUtility.UrlEncode(city, System.Text.UnicodeEncoding.GetEncoding("GB2312"));
        //初始化新的 WebRequest
        HttpWebRequest webrt = (HttpWebRequest)WebRequest.Create("http://php.weather.sina.com.cn/search.php?city=" + mycity);
        HttpWebResponse webrs = (HttpWebResponse)webrt.GetResponse();
        //从Internet资源返回数据流
        Stream stream = webrs.GetResponseStream();
        //读取数据流
        StreamReader srm = new StreamReader(stream, System.Text.Encoding.Default);
        //读取数据
        weacherhtml = srm.ReadToEnd();
        srm.Close();
        stream.Close();
        webrs.Close();
        //针对不同的网站,请查看HTML源文件
        int start = weacherhtml.IndexOf("天气状况 begin"); //取的字符位置
        int end = weacherhtml.IndexOf("天气状况 end");
        return weacherhtml.Substring(start + 14, end - start);
    }   
}
2。添加Web引用,选择“此解决方案中的 Web 服务 ”这个时候,会自动找出“Weather”这个服务。
3。新建ASPX页面,在页面上放Button1、Label1、TextBox1这三个控件。代码如下:

 protected void Button1_Click(object sender, EventArgs e)
    {
        Weather myWeather = new Weather();
        Label1.Text = myWeather.GetWeather(TextBox1.Text);
    }

 这个时候运行试下,就可以看到,调用新浪的天气预报了。

posted @ 2010-07-15 21:47  水木  阅读(5512)  评论(3编辑  收藏  举报