C#調用WebService擷取天氣資訊

來源:互聯網
上載者:User

標籤:

概述

  本文使用C#開發Winform應用程式,通過調用<WebXml/>(URL:http://www.webxml.com.cn)的WebService服務WeatherWS來擷取天氣預報資料。本程式所使用的Web服務的URL為:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx,此服務為“2400多個城市天氣預報Web服務”。

  開發環境說明:

  • 系統平台:Windows 7(32bit);
  • 開發工具:VS2010;
實現過程

  本程式通過“添加Web引用”和“使用WSDL檔案”兩種方式實現WebService服務的調用。

1、添加Web引用

  首先,建立一個WinForm應用程式,在“解決方案管理器”中為該工程添加Web引用:右擊工程-->加入服務參考,彈出如下“服務引用設定”對話方塊:

  

  點擊該對話方塊“添加Web引用”按鈕,彈出“Web引用”對話方塊,在其中的URL處輸入WeatherWS服務地址(http://ws.webxml.com.cn/WebServices/WeatherWS.asmx),點擊轉到“-->”按鈕,修改Web引用名為“WebRefWeather”,如所示:

  

  此時,在需要擷取天氣資訊的地方添加“擷取天氣核心代碼”即可。我是在"按鈕響應函數"中添加的,代碼如下:

WebRefWeather.WeatherWS weather = new WebRefWeather.WeatherWS();string[] str = new string[32];try{    str = weather.getWeather("北京", "");    MessageBox.Show(str[0] + "\n" + str[1] + "\n" + str[2] + "\n" + str[4] + "\n" + str[5], "天氣資訊");}catch (Exception ex){    MessageBox.Show(ex.Message);}

  程式運行後,點擊按鈕,即可顯示天氣資訊,如所示:

  

2、使用WSDL檔案

  此方法為通過使用VS工具由Web服務URL(http://ws.webxml.com.cn/WebServices/WeatherWS.asmx)或者本地的WeatherWS.asmx檔案得到wsdl檔案;然後由wsdl檔案產生cs檔案,即Web服務代理類,最後通過使用此類擷取天氣資料。即一下幾步:

  • asmx檔案 --> wsdl檔案(VS2010工具:disco);
  • wsdl檔案 --> cs檔案(VS2010工具:wsdl);

  首先,看一下disco工具的協助,如所示:

  

  通過如下命令,得到wsdl檔案:

disco http://ws.webxml.com.cn/WebServices/WeatherWS.asmx

  如所示:

  

  然後,通過wsdl命令由wsdl檔案產生cs檔案,wsdl命令協助如下:

  

  產生cs檔案的命令如下:

wsdl /l:cs /n:NS_WeatherWS /out:WeatherWS.cs WeatherWS.wsdl

  即:

  

  此時,將cs檔案加入到建立的Winform工程中,再在按鈕的響應函數中加入如下核心代碼:

NS_WeatherWS.WeatherWS weather = new NS_WeatherWS.WeatherWS();string[] str = new string[32];try{    str = weather.getWeather("北京", "");    MessageBox.Show(str[0] + "\n" + str[1] + "\n" + str[2] + "\n" + str[4] + "\n" + str[5], "天氣資訊");}catch (Exception ex){    MessageBox.Show(ex.Message);}

  此時,運行程式,會出現如下錯誤:

命名空間“System.Web”中不存在類型或命名空間名稱“Services”。是否缺少程式集?

  解決辦法:在該工程中添加DotNet引用System.Web.Services即可,如所示:

  

  添加之後,再啟動程式,程式即會啟動成功。然後,點擊按鈕,即會像上一個方法一樣顯示天氣資訊,如所示:

  

C#調用WebService擷取天氣資訊

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.