WebService的創建與調用


 寫在前面: 你要相信,只要你順其自然地看完,肯定能幫到你的忙

 

開發環境 VS 2015 Enterpise 英文版

 

背景:想要調用一個WebService,肯定是因為這個WebService里面有你想要的數據或方法,你才會去調用它

調用分三種,第一種:就是我下面要具體講的Demo,本機上的一個VS項目去調本機上另一個VS項目里的WebService(里面的方法,數據,...);

               第二種:就是調Internert上的開放WebService(有收費和不收費的),等等一筆帶過;

               第三種:與前面兩個都不同,比如說我想調用的WebService不在我本機上,別人也沒有發布在Internet上,而是在別人的服務器上,別急,最后會聊;

只想知道如何調用的同學,我建議也要把第一步如何創建瞥下(即使你調用的是別人寫好的WebService),但是知其然並知其所以然不是更好嗎

 

1.創建:假設我們(在WebService里)創建一個 返回"Hello World"字符串 的方法去給別人調用,別問我為什么舉這么low的Demo,往下看你就知道了

創建一個項目,用來提供WebService服務

有ASP.NET 空 Web應用程序 的同學選空的就行

 

 這里創建一個Web服務,文件名是以asmx結尾的,等等我們想去創建給他人調用的方法,就寫在這個里面哦

 下面是系統默認生成的

哈哈,現在知道我為什么舉這么Low的Demo了吧,我本打算寫別的,不過不忘初心吧,Hello Word!

 

哦,對了,忘說了,有沒有注意到方法上面的這個帽子呢,好吧,我自己習慣喊它帽子,只有讓方法頭上蓋上這頂帽子,別人才可以調用該方法哦(這個雖然是系統默認生成的,但是以后自己

開發其它方法時,如果想被其他人調用的到的話,別忘記加上去哦)

2.發布      好吧,重點才開始,只想知道如何調用的同學可以認真看了,老夫先習慣性的Ctrl + Shift + B一波

右擊這個asmx文件所屬的項目(類庫),點擊Publish(發布)

給要發布的類庫起個名字,這僅僅是個名字而已,並且看不見,摸不着,並不是你理解的發布后生成的文件會存在這個TheProfileToStorePublish里,這只是個不存在的名字

好吧,這不重要,我的意思只想表示,忘了這個TheProfileToStorePublish

 

別看下面要填的這么多,這里選擇 文件系統 后 就簡便很多了

 點擊發布后,WebService項目會編譯生成文件,存在你剛才取的叫阿貓阿狗文件夾里,所以TheProfileToStorePublish不重要,阿貓阿狗才重要

 

點進去找到了生成后的文件們,還有那個最重要的acmx文件,這個文件最終都會出場的哦,別急 往下看

 

2.5   到這你可能覺得發布成功了,另一個VS里面的項目就可以調用了,但是你想想,怎么才能讓另一個VS項目里面能調用到這些文件呢

其實只要把這個發布后生成的文件部署到IIS就可以了

我習慣自己手動建應用程序池,可能大部分人都是直接新建網站,然后調用自動生成的與網站同名的應用程序池

可我就喜歡自己先建個應用程序池,然后新建網站的時候,應用程序池選擇我自己建的,不要問我為什么

 

 

應用程序池建好后 再建網站

別急,還沒完呢,把WebService給別人調用的原理,就是拿一個Url給別人的VS里,怎么拿這個Url呢,這也是我們要部署IIS的真正原因

 

Boom,是不是有人跟我一樣報錯了,別慌,看看錯誤提示的什么,我們照做就可以了

一開始就不報錯的同學靠邊站,你人品挺好的,這個時候我們再回頭點擊Url,發現出現以下頁面,其中有包含我們要調用方法的asmx文件,恭喜你,發布完全結束!

 

3.調用

現在我們在另一個VS項目里,你想在這個VS項目里調用之前發布過的WebService

我點

我再點

 

注意:這個路徑 必須是 網站Url后面加上/你的asmx文件(我們在第一個項目建的Web服務),不然找不到的

 

 

 

 

如果你電腦聯網的話,這個地址可以調Internet上有的,比如天氣預報發布的WebService的最終的Url,可以搜下拿來用

 

 

 正常情況下,一個簡單的WebService從創建->發布->調用算是完成了

我們再來聊聊一開始說的,第三種情況

其實,第一種並不滿足實際生活中的開發,不過也不難,首先我們需要知道我們要調的那個人的asmx叫什么,里面的方法名是什么,需要傳什么參數

我們F12進去看下

 

 

 我們會發現 因為調用本地IIS的原因,調用的Url是寫死的,我們真正調別人機器上的WebService時,可以通過WebConfig里面設置

<appsettings>

<add key="WebServiceUrl" value="xxxx">

</appsettings>

然后代碼里var webServiceUrl = ConfigurationManager.AppSettings["WebServiceUrl"]

ws.Url = webServiceUrl

最終代碼合到你要調用那個人的服務器上時,WebConfig里配那個人的IIS地址就行

我只能說,通過配WebConfig可能並不是個很好的方法,我自己也很少用,但SharePoint的東西放在這里又不適合,所以目前推薦可以用這種

 

寫在最后:如果覺得有講得不明白的地方,歡迎聯系我,郵箱地址:jiyisharp@foxmail.com

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM