如何調用遠程web service

如何調用遠程web service
1. 生成.dll文件 (先用WSDL.exe生成代理類,再編譯生成.dll,這樣就可以直接引用了)
2. 直接web引用  用vs2005

 

如何創建和使用Web Service代理類 
Web服務代理是支持.net的編程語言文件,由.net框架提供的WSDL工具自動生成。代理類不包含任何應用程序邏輯。相反,他包含關於如何傳遞參數和檢索結果的傳輸邏輯,還包含Web服務中的方法及原型列表。代理類可以從任何WSDL文件創建。 

可以像訪問com對象一樣訪問Web服務。要訪問Web服務,需要從本地計算機上的Web服務的WSDL文檔創建代理類。.net提供了名爲WSDL.exe的工具以自動生成代理類文件。下面詳細說明其創建和使用過程: 
1、 新建一個asp應用程序(#C)工程,工程名爲TeachShow,在TeachShow工程中創建一個文件夾Charpter8,在該文件夾下創建一個新的Web服務,取名爲:Computer.asmx 
2、 切換到代碼視圖,編寫下面的代碼: 
[WebMethod(Description="用於相加運算", EnableSession=false)] 
public int Add(int a,int b) 

return a+b; 

[WebMethod(Description="用於相減運算", EnableSession=false)] 
public int Sub(int a,int b) 

return a+b; 

[WebMethod(Description="用於相乘運算", EnableSession=false)] 
public int Multi(int a,int b) 

return a*b; 

[WebMethod(Description="用於相除運算", EnableSession=false)] 
public double Devide(int a,int b) 

return Convert.ToDouble(a)/Convert.ToDouble(b); 
}

3、按F5編譯整個工程(這一步一定要做,如果不做第4步無法實現) 

4、打開MS.net 2003的命令提示工具,輸入:C:/>wsdl http://localhost/TeachShow/Charpter8/FirstAndUse/Computer.asmx /n:ComputerNameSpace,其中,ComputerNameSpace是自定義的命名空間。提示如下: 
Microsoft (R) Web 服務描述語言實用工具 
[Microsoft (R) .NET Framework,版本 1.1.4322.573] 
Copyright (C) Microsoft Corporation 1998-2002. All rights reserved. 

正在寫入文件“C:/Computer.cs”。 

5、注意,此時在C:盤(其實就是命令提示符的當前目錄)下生成一個和Computer.asmx相同文件名的C#源文件Computer.cs。 

6、編譯Computer.cs文件,在命令提示符下輸入如下命令:C:/>csc /out:ComputerDll.dll /t:library /r:System.Web.Services.dll c:/Computer.cs。其中,/out:ComputerDll.dll是要輸出的dll文件,/t:library是輸出文件類型,/r:System.Web.Services.dll是要引用的組件,c:/Computer.cs是第4步生成的C#文件。 

7、此時,將會在C:盤下生成一個叫ComputerDll.dll的文件,要使用這個文件,必須複製到TeachShow文件夾下的bin目錄下。默認情況下爲:C:/Inetpub/wwwroot/TeachShow/bin。 

8、新建一個名爲TestWSDL.aspx的WEB窗體文件,並添加一個引用,將剛纔生成的ComputerDll.dll文件作爲引用添加到工程中。 

9、在TestWSDL.aspx窗體的Load事件中編寫代碼: 
ComputerNameSpace.Computer com=new ComputerNameSpace.Computer(); 
this.Response.Write("和:"+com.Add(45,65).ToString()+" "); 
this.Response.Write("減:"+com.Sub(78,900).ToString()+""); 
this.Response.Write("乘:"+com.Multi(43,55).ToString()+""); 
this.Response.Write("除:"+com.Devide(1000,33).ToString()); 
顯示結果: 
和:110 
減:978 
乘:2365 
除:30.3030303030303 

10、至此,程序完成。

-----------------------------------------------------------

直接用VS2005利用web service地址直接引用

webservice提供一個接口,供我們調用,只需調用其相應的方法,就會有數據返回,數據是以xml格式返回的.  
有朋友問到:在我的blog中曾提到一些實用的Web Service,但不知道如何在vs中調用它,這裏寫了一個簡單的教程. 
希望  能有所幫助.   
幾個實用的Web Service地址  
http://www.lemongtree.com/2006/03/28/0000307.aspx
這裏我以天氣預報地址:http://www.wopos.com/webservice/weather.asmx  爲例來說明.    
首先,我們在vs2005新建一個工程,這個工程可以是一個web工程,也可以是一個win程序.   
當然,你也可以在vs2003中做下面的操作.我這裏是建立的一個web工程 
選取asp.net網站,然後確定  這時,vs2005會自動爲我們新建一個default.aspx並已經打開了該文件   
我們就在這個文件中來操作它  

下一步,我們選中網站,單擊右鍵,選擇添加web引用,這樣就可以引用外部的web service了,這是最關鍵的一步.   
在下面的對話框中輸入遠程的web service地址,如:http://www.wopos.com/webservice/weather.asmx   
再點擊"前往",vs會自動搜索該web service上的所有方法  
web引用名相當於Namespace,你可以作更改,也可以用默認的,一般默認的引用名是域名的反寫,vs還會告訴我們在這裏找到了多少個方法 等有用的信息  

然後單擊"添加引用",這時我們的工程下就會多出一個名爲"App_WebReferences"的目錄(vs2003下可能會有所不同),  

這時,表明我們已經引用了外部的web service,我們在代碼區可以像使用一般的類那樣來調用它.現在轉到代碼區 當我敲入com時,vs已經提示我了  

創建一個Weather類的實例,然後調用getWeather(string city)方法就行了 
最終的代碼 

protected void Page_Load(object sender, EventArgs e)    
  {         
com.wopos.www.Weather service = new com.wopos.www.Weather();       
   Response.Write(service.getWeather("武漢"));     

現在編譯預覽 

OK!已經取到數據了,但格式並不是我們需要的,所以需要進一步處理,如何處理,請大家參考"幾個實用的Web Service"中的相關說明,這裏就不多說了.   
由此可見,調用一個web service是非常簡單的,但是,如果遠程的web service的地址做了更改,或是改變了方法名,那我們的web service就要重新引用了並編譯了, 所以最好是把方法名和service URL寫在配置文件中,這樣就方便多了.

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