不同的系統之間經常會需要數據的交換對接,而Web Service技術, 能使得運行在不同機器上的不同應用無須借助附加的、專門的第三方軟件或硬件, 就可相互交換數據或集成。依據Web Service規范實施的應用之間, 無論它們所使用的語言、 平台或內部協議是什么, 都可以相互交換數據。Web Service是自描述、 自包含的可用網絡模塊, 可以執行具體的業務功能。Web Service也很容易部署, 因為它們基於一些常規的產業標准以及已有的一些技術,諸如標准通用標記語言下的子集XML、HTTP。Web Service減少了應用接口的花費。Web Service為整個企業甚至多個組織之間的業務流程的集成提供了一個通用機制。(百度百科);
使用ABP.NET 框架調用客戶提供的數據,簡單的記錄一下過程;
1、在依賴項添加引用服務
2、填寫webservice地址 然后點擊轉到
3、引用服務成功后
4、調用webservice里面的方法獲得數據並解析
// 創建 HTTP 綁定對象 var binding = new BasicHttpBinding(); //最大獲取數據 binding.MaxReceivedMessageSize = 2147483647; // 根據 WebService 的 URL 構建終端點對象,參數是提供的WebService地址 var endpoint = new EndpointAddress(@"http://00.000.002.09/00/00/00.asmx"); // 創建調用接口的工廠,注意這里泛型只能傳入接口 泛型接口里面的參數是WebService里面定義的類名+Soap var factory = new ChannelFactory<ReadMESSoap>(binding, endpoint); // 從工廠獲取具體的調用實例 var callClient = factory.CreateChannel();// 調用具體的方法,這里是 GetUserTimeBySQLAsync 方法 這一步就能獲得數據了。 我這里拿到的是ArrayOfXElement 數據 var result = await callClient.GetUserTimeBySQLAsync("where name='林小強'"); //創建List集合 List<SwipeCardData> CardDataList = new List<SwipeCardData>(); //返回是xelement的集合,首先獲得真正的表的節點。使用Nodes.Descendants("Table"),獲得指定標簽,然后foreach遍歷 解析 foreach (XElement el in result.Nodes.Descendants("Table")) { SwipeCardData CardData = new SwipeCardData(); //根據節點循環賦值給SwipeCardData類 foreach (XElement ell in el.Nodes()) { switch (Convert.ToString(ell.Name)) { case "LineID": CardData.ProcessID = Convert.ToInt32(ell.Value); break; case "LineDesc": CardData.ProcessName = ell.Value; break; case "StationID": CardData.StationID = Convert.ToInt32(ell.Value); break; case "StationDesc": CardData.StationNmae = ell.Value; break; case "UserID": CardData.EmployeeNum = ell.Value; break; case "UserName": CardData.EmployeeName = ell.Value; break; case "StatusDesc": CardData.type = ell.Value; break; case "RecordTime": CardData.AtWork = Convert.ToDateTime(ell.Value).ToString("yyyy-MM-dd HH:mm:ss.fff"); break; case "ID": CardData.Id = Guid.NewGuid(); break; default: break; } } //將轉換后的數據 添加到我設定屬性的數組中 CardDataList.Add(CardData); }