天天看點

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

使用SoapCore實作在.net core平台下開發webservice;以及使用HttpClientFactory動态通路webservice。

首先,需要在包項目下面引用SoapCore:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

然後建立項目Wsk.Core.WebService,用于開發webservice有關功能。

新項目下,需要先引用package項目,然後建立一個IWeskyWS接口,以及提供了三個Hello方法(webservice有可能不支援重載,如果後面無法進行服務引用,可以更改為Hello1,Hello2,Hello3),用于實驗使用。其他介紹,如下圖示注所示:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

該部分代碼:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口
十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

View Code

現在轉到啟動項目下,引用該項目。然後在啟動項裡面,添加服務注入:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

在Configure下,添加UseSoapEndpoint,以及有關注釋,如圖注釋部分:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

啟動程式,并且在浏覽器下指定對應的asmx位址,如果有提示下方的xml文檔,則代表啟動成功。

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

現在咱們建立一個基于.net framework的控制台項目,用來做測試使用。

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

建立完畢以後,結構如下:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

現在通過引用服務的方式進行引用一下:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

在Main方法下面調用webservice,并列印,結果如下:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

注意有個坑:使用SoapCore開發的該Webservice,目前隻能通過添加服務引用的方式被識别。使用動态通路方式,會無法通路。如果其他小夥伴解決了該問題,歡迎留言。

接下來提供一個簡單的使用.net core通過HttpClientFactory來通路Webservice的方法。

注意還有一個坑:該方法目前僅針對于webservice方法參數不存在實體類的情況下。如果是複雜資料,目前暫時不支援,或者是我目前未找到行之有效的方法,也歡迎各位大佬留言評論,提供更加有效的法子。

由于上面使用soapCore開發的webservice目前隻能被服務引用,是以此處不對其做動态通路測試有興趣的可以自行嘗試。我先建立一個使用.net framework開發的webservice。

建立一個Asp.Net Web應用程式,配置如下圖:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

建立以後,添加一個建立項,選擇web服務,用以開發webservice測試方法:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

建立成功,以後,結構如下圖,以及會有一個預設的HelloWorld方法。

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

現在加點測試方法,帶一個參數的Hello1,以及帶兩個參數的Hello2:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

運作以後,如果有以下頁面,說明該webservice開發成功:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

現在切換回Wsk.Core項目,在啟動項目的控制器裡面,建立一個webapi,,用來觸發通路webservice的方法,進行有關驗證。先添加HttpClientFactory的依賴注入:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

在此之前,還需要在啟動項裡面,添加對HttpClient的注冊:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

現在在新增的webapi裡面,做一些通路webservice的實作。先建立一個動态通路webservice的方法:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

方法代碼:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口
十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

其中,注釋部分是用于擷取xml内資料使用的,為了看完整的資料,是以做了注釋。有興趣的可以打開注釋進行嘗試。

然後在TestCallWS這個api下面對以上三個webservice方法進行通路:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

該webapi代碼:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口
十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

啟動程式,并且在swagger上面進行調用,看看結果:

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

通路成功,教程結束。

以上寫法也不是最好的寫法,以及使用.net core開發webservice如何能夠被動态通路、以及在.net core上如何動态通路帶實體參數的方法,目前還需要進一步探讨。也歡迎大佬們踴躍提供可行的技術方向。感謝大家抽時間看完該文章,希望對大家能有一點幫助。

先前也有一期使用HttpClient和HttpWebRequest進行通路webapi的文章,如果有興趣也可以莅臨指導:https://www.cnblogs.com/weskynet/p/14856130.html

到此完畢,謝謝觀看。

歡迎加入QQ群:

群号:1079830632

十九、.net core使用SoapCore開發webservice接口,以及使用HttpClientFactory動态通路webservice接口

繼續閱讀