從表面上看,Web service 就是一個(gè)應(yīng)用程序,它向外界暴露出一個(gè)能夠通過Web進(jìn)行調(diào)用的API。這就是說,你能夠用編程的方法通過Web來調(diào)用這個(gè)應(yīng)用程序。
Web Service是一種具有下列功能的軟件組件:
● 可以通過SOAP 接口(Simple Object Access Protocol簡(jiǎn)單對(duì)象訪問協(xié)議) 接口來進(jìn)行訪問 。
● 它是使用WSDL(Web Service Description Language,Web Service描述語言 ) 文檔形式描述的接口。
一、建立一個(gè)WebService
打開.NET。新建工程。選擇ASP.NET WEBSERVICE。確定。可以看到Service1.asmx.cs文件中有一個(gè)被注釋掉的HelloWorld() example。
去掉注釋。即可得到一個(gè)WebService的HelloWorld方法。
如果你愿意還可以添加別的方法。
運(yùn)行即可看到你的可供調(diào)用的WebService方法的列表。
二、調(diào)用WebService
新建一個(gè)Windows Application。
在.NET中的調(diào)用相對(duì)簡(jiǎn)單。微軟已經(jīng)做好了中間的代理類,只有我們稍微做一下配置即可。
在SolutionExplor中右擊Reference。添加WebReference。在URL欄中填入剛才WebService運(yùn)行的地址。例如:http://localhost/WebService1/Service1.asmx。點(diǎn)擊Go,即可看到你的WebService方法列表。點(diǎn)擊添加引用。
在Form上添加一個(gè)按鈕和一個(gè)文本框。在按鈕的點(diǎn)擊事件添加如下代碼:
WindowsApplication1.WebReference.Service1 test = new WindowsApplication1.WebReference.Service1(); this.textBox1.Text = test.HelloWorld(); |
在運(yùn)行后點(diǎn)擊按鈕,可以看到文本框中的文本變成了Hello World。WebService調(diào)用成功。
注:
在調(diào)用WebService時(shí)出現(xiàn)如下錯(cuò)誤System.Net.WebException: The request failed with HTTP status 401:
Access Denied。在網(wǎng)上搜索一下發(fā)現(xiàn)出現(xiàn)這種錯(cuò)誤的很多。原因不詳。但是基本是權(quán)限問題造成的。
我做了如下嘗試
●文件夾權(quán)限改成EveryOne都可以訪問。
●添加引用的時(shí)候把localhost改成127.0.0.1。
●把ASPNET用戶添加到管理員組。
但是都沒有奏效。然后我重新安裝了IIS。發(fā)現(xiàn)可以了。仍然不知道是什么原因造成的。暫做記錄。以備后查。
hello.Credentials = System.Net.CredentialCache.DefaultCredentials;
string a = hello.HelloWorld();
如此可以解決401問題