初用WebService

WebService實現天氣預報


什麼是webService

WebService是基於Web的服務。它使用Web(HTTP)方式,接收和響應外部系統的某種請求,從而實現遠程調用

WebService的協議和語言

WebService所使用的數據是基於XML格式的。WebService在數據格式上主要採用SOAP協議。
SOAP即簡單對象訪問協議(Simple Object Access Protocal),它是用於交換XML編碼信息的輕量級協議。
Web Service描述語言WSDL是用於描述Web Service及其函數、參數和返回值。

WebService實現天氣查詢

1. 首先拿到Web服務

天氣的web服務

中國氣象服務網

2.查看功能函數

getSupportCity:通過給定省份名稱得到全部支持的城市

獲得指定城市

getSupportDataSet:獲得一個dataset集合,包括所有支持的省份城市

獲得所有省份城市

getSupportProvince:獲得國內所有支持的省份

國內所有支持的省份

getWeatherbyCityName :獲得指定城市的天氣信息

城市的天氣信息

3.新建項目

  1. 打開VS-新建一個Web項目

  2. 添加服務引用-高級-添加Web引用
    添加web引用

  3. 新建一個Web頁面

前端內容:

<form id="form1" runat="server">
    <div>       
        <label>省份:</label><asp:DropDownList ID="Province" runat="server" AutoPostBack="True" OnSelectedIndexChanged="Province_SelectedIndexChanged"></asp:DropDownList><br/>
        <br/>
        <label>城市:</label><asp:DropDownList ID="City" runat="server" AutoPostBack="True"></asp:DropDownList><br/>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
    </div>
        <br/>
    <div>
        <label>查詢日期:</label><asp:Label ID="Label7" runat="server" Text="Label"></asp:Label><br/>
        <label>查詢城市:</label><asp:Label ID="Label8" runat="server" Text="Label"></asp:Label><br/>
        <label>今日實況:</label><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <br/>

        <label>今日天氣:</label><asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
            <asp:Image ID="Image1" runat="server" />
            <asp:Image ID="Image2" runat="server" /><br/>
        <label>今日指數:</label><asp:Label ID="Label5" runat="server" Text="Label"></asp:Label><br/>

        <label>明日天氣:</label><asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
            <asp:Image ID="Image3" runat="server" />
            <asp:Image ID="Image4" runat="server" /><br/>

        <label>後日天氣:</label><asp:Label ID="Label4" runat="server" Text="Label"></asp:Label>
            <asp:Image ID="Image5" runat="server" />
            <asp:Image ID="Image6" runat="server" /><br/>

        <label>城市簡介:</label><br/>
        <asp:Image ID="Image7" runat="server" />
        <asp:Label ID="Label6" runat="server" Text="Label"></asp:Label>
    </div>
    </form>

後端內容:

WeatherWebService client = new WeatherWebService();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindProvince();               

            }          
        }
//省份數據的綁定
public void BindProvince()
        {

            DataSet ds = client.getSupportDataSet();

            Province.DataSource = ds.Tables[0].DefaultView;

            Province.DataTextField = "Zone";

            Province.DataValueField = "ID";

            Province.DataBind();

        }

//城市數據的綁定
public void BindCity(string zongID)
        {

            DataSet ds = client.getSupportDataSet();

            DataView dv = new DataView(ds.Tables[1]);

            dv.RowFilter = "ZoneID=" + zongID;

            City.DataSource = dv;

            City.DataTextField = "Area";

            City.DataValueField = "AreaCode";

            City.DataBind();

        }
//天氣數據的綁定
public void BindCityWeather(string cityName)
        {

            string[] weather = client.getWeatherbyCityName(cityName);

            Label1.Text = weather [10];

            Label2.Text = weather [6] + "&nbsp;&nbsp;&nbsp;" + weather [5] + "&nbsp;&nbsp;&nbsp;" + weather [7];

            Label3.Text = weather [13] + "&nbsp;&nbsp;&nbsp;" + weather [12] + "&nbsp;&nbsp;&nbsp;" + weather [14];

            Label4.Text = weather [18] + "&nbsp;&nbsp;&nbsp;" + weather [17] + "&nbsp;&nbsp;&nbsp;" + weather [19];

            Label5.Text = weather [11];

            Label6.Text = weather [22];

            Label7.Text = Convert.ToDateTime(weather [4]).ToLongDateString();

            Label8.Text = weather [0] + " / " + weather [1];

            Image1.ImageUrl = "~/Resource/weather/" + weather [8];

            Image2.ImageUrl = "~/Resource/weather/" + weather [9];

            Image3.ImageUrl = "~/Resource/weather/" + weather [15];

            Image4.ImageUrl = "~/Resource/weather/" + weather [16];

            Image5.ImageUrl = "~/Resource/weather/" + weather [20];

            Image6.ImageUrl = "~/Resource/weather/" + weather [21];

            Image7.ImageUrl = "~/Resource/City2/" + weather [3];

            Image7.AlternateText = City.SelectedItem.Text;

        }
//按鈕點擊事件
protected void Button1_Click(object sender, EventArgs e)
        {
            //Button控件的點擊事件會觸發IsPostBack
            string cityName = City.SelectedItem.Value.ToString();
            BindCityWeather(cityName); 
        }
//省份下拉列表的選擇改變事件
        protected void Province_SelectedIndexChanged(object sender, EventArgs e)
        {
            //DropDownList的SelectedIndexChanged無法觸發解決辦法
            //把控件的AutoPostTBack設爲True,在IsPostBack中寫處理方法
            string ID = Province.SelectedItem.Value.ToString();
            BindCity(ID);
        }

保存-運行。

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章