.NET Core 如何調用 WebService

来源:https://www.cnblogs.com/myzony/archive/2018/08/28/9547254.html
-Advertisement-
Play Games

0.使用背景 因為現在的項目都是基於 .NET Core 的,但是某些需要調用第三方的 WebService 服務,故有了此文章。其基本思路是通過微軟提供的 Svcutil 工具生成代理類,然後通過 System.ServiceModel 來調用代理類所提供的對象與方法。 1.配置準備 1.1 新建 ...


0.使用背景

因為現在的項目都是基於 .NET Core 的,但是某些需要調用第三方的 WebService 服務,故有了此文章。其基本思路是通過微軟提供的 Svcutil 工具生成代理類,然後通過 System.ServiceModel 來調用代理類所提供的對象與方法。

1.配置準備

1.1 新建並編輯項目

首先新建一個新的 .NET Core 控制台程式,通過命令行視窗或者 Powershell 執行以下命令新建一個項目。

dotnet new console

然後編輯項目文件 WebServiceConsole.csproj ,併在其中加入以下內容:

<ItemGroup>
    <DotNetCliToolReference Include="dotnet-svcutil" Version="1.0.*" />
</ItemGroup>

這樣最終 WebServiceConsole.csproj 的內容會是這樣子的。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="dotnet-svcutil" Version="1.0.*" />
  </ItemGroup>
</Project>

繼續打開命令行視窗或者 Powershell 執行以下命令,還原項目文件的包。

dotnet restore

1.2 代理類生成

現在準備工作做好了,現在我們可以使用 dotnet svcutil 命令來生成代理類,或者你可以到 WindowsSDKs 的目錄下找到 SvcUtil.exe 來執行代理類生成操作。

dotnet svcutil [WebService 地址]

上面是命令格式,比如說我這裡有一個 WebService 提供的介面,其地址為 http://localhost:3000/bsp-oisp/ws/sfexpressService?wsdl ,那麼我們需要打開命令行工具,執行以下命令來生成代理類。

dotnet svcutil http://localhost:3000/bsp-oisp/ws/sfexpressService?wsdl](http://localhost:3000/bsp-oisp/ws/sfexpressService?wsdl

成功之後會看到文件夾裡面多了一個文件夾。

註意,在生成代理類之後,我們還需要再執行一次 dotnet restore 來還原代理類當中所使用到的 NuGet 包。

2.調用 WebService 介面

生成代理類之後,重新打開項目,可以看到多了一個 ServiceModel1 的文件夾,在裡面還有一個 Reference.cs 的文件,這個文件裡面的內容就是根據我們之前提供的 Url 生成的代理類了。

用法的話很簡單,需要三步,在這裡我直接在 Main() 方法內部寫調用方法了,註意這裡基本上所有生成的方法都是非同步方法。

using System;
using System.ServiceModel;
using System.Threading.Tasks;

namespace WebServiceConsole
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // 創建 HTTP 綁定對象
            var binding = new BasicHttpBinding();
            // 根據 WebService 的 URL 構建終端點對象
            var endpoint = new EndpointAddress(@" http://localhost:3000/bsp-oisp/ws/sfexpressService?wsdl](http://localhost:3000/bsp-oisp/ws/sfexpressService?wsdl");
            // 創建調用介面的工廠,註意這裡泛型只能傳入介面
            var factory = new ChannelFactory<IExpressService>(binding, endpoint);
            // 從工廠獲取具體的調用實例
            var callClient = factory.CreateChannel();
            // 調用具體的方法,這裡是 sfexpressServiceAsync 方法。
            var result = await callClient.sfexpressServiceAsync(new sfexpressService());

            Console.ReadLine();
        }
    }
}

3.參考資料:

[1]https://docs.microsoft.com/en-us/dotnet/core/additional-tools/dotnet-svcutil-guide

[2]https://www.jianshu.com/p/aae85122f20f?tdsourcetag=s_pctim_aiomsg


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 使用的是MVC .NET Framework4 微信小程式支付 小程式端源碼 MVC項目發佈前的配置 ...
  • 需要引用的命名空間: 讀取的具體應用: this代表本實體(對象),通過PopulateObject,直接將讀取到的json數據與對象進行綁定 Json保存的具體應用: 將對象保存為Json JObject來源如下圖: ...
  • 我的項目結構如下圖: 日誌幫助類庫需要log4net包:工具—NuGet包管理器—管理解決方案NuGet程式包 線程日誌幫助類 FlashLogger.cs 代碼 using System; using System.Collections.Concurrent; using System.Coll ...
  • 1.添加程式集引用:WindowsBase 2.添加nuget:DocumentFormat.OpenXml 3.代碼: var wordPath = @"C:\xxx.docx"; using (WordprocessingDocument doc = WordprocessingDocument ...
  • 寫博客原因:添加了區域(用作後臺)後,報錯: An unhandled exception occurred while processing the request.AmbiguousActionException: Multiple actions matched. The following ...
  • 2018-08-28 IIS配置文件上傳大小限制 問題:上傳文件過大導致上傳不了,直接在webconfig里做以下配置會導致程式出錯,這個需要在IIS里配置 步驟: 1、在iis里點開配置編輯器 2、在system.web/httpRuntime 節點下找到以下配置項,設置文件大小。(1M = 10 ...
  • JQuery ajax支持get方式的跨域,採用了jsonp來完成。完成跨域請求的有兩種方式實現。一種是使用Jquery ajax最底層的Api實現跨域的請求,而另一種則是JQuery ajax的高級封裝。 方式1:使用Jquery ajax方式。 1 $.ajax({ 2 url:'http:// ...
  • 前沿: 一般情況下,在我們做訪問許可權管理的時候,會把用戶的正確登錄後的基本信息保存在Session中,以後用戶每次請求頁面或介面數據的時候,拿到 Session中存儲的用戶基本信息,查看比較他有沒有登錄和能否訪問當前頁面。 Session的原理,也就是在伺服器端生成一個SessionID對應了存儲的 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...