動態新增WebService

2021-05-23 00:32:46 字數 813 閱讀 8144

通常我們在程式中需要呼叫webservice時,都是通過「新增web引用」,讓 vs.net環境來為我們生成服務**,然後呼叫對應的web服務。這樣是使工作簡單了,但是卻和提供web服務的url、方法名、引數繫結在一起了,這 是vs.net自動為我們生成web服務**的限制。如果哪一天發布web服務的url改變了,則我們需要重新讓vs.net生成**,並重新編譯。在某 些情況下,這可能是不能忍受的,我們需要動態呼叫webservice的能力。比如我們可以把web服務的url儲存在配置檔案中,這樣,當服務url改 變時,只需要修改配置檔案就可以了。

說了這麼多,實際上我們要實現這樣的功能:

其中,url是web服務的位址,methodname是要呼叫服務方法名,args是要呼叫web服務所需的引數,返回值就是web服務返回的結果了。

要實現這樣的功能,你需要這幾個方面的技能:反射、codedom、程式設計使用c#編譯器、webservice。在了解這些知識後,就可以容易的實現 web服務的動態呼叫了:

上面的注釋已經很好的說明了各**段的功能,下面給個例子看看,這個例子是通過訪問http://www.webservicex.net/globalweather.asmx 服務來獲取各大城市的天氣狀況。

上述的例子中,呼叫web服務使用了兩個引數,第乙個是城市的名字,第二個是國家的名字,web服務返回的是xml文件,可以從其中解析出溫度、風力等天 氣情況。

最後說一下,c#雖然仍屬於靜態語言之列,但是其動態能力也是很強大的,不信,你可以看看spring.net的aop實現,這種「無侵入」的aop實現 比通常的.net宣告式aop實現(一般是通過aop attribute)要漂亮的多。

引用命名空間

C 不新增引用,動態呼叫webservice

好像很多人做webservice的時候都是直接新增引用的方式,然後呼叫服務端的方法。這樣就個問題,就是每次我服務端新增了方法或者修改了方法後都要更新web引用,這樣比較麻煩。下面給乙個不用新增引用的方式呼叫服務端的方法.只是乙個簡單的測試,不是很規範,用得著的人可以自己封裝一下,然後直接傳服務端的方...

動態呼叫WebService

public static object invokewebservice string url,string methodname,object args 其中,url是web服務的位址,methodname是要呼叫服務方法名,args是要呼叫web服務所需的引數,返回值就是web服務返回的結果了...

動態呼叫webservice

protected string testservice string strurl,string methodname assembly asm assembly.loadfrom mytest.dll 載入前面生成的程式集 type t asm.gettype testwebservice.se...