iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
永豐金融APIs

菜鳥工程師想用C#做出金流微服務是否搞錯了什麼?系列 第 9

[Day 09] 用HttpClientFactory實踐WebAPI服務 - 升級永豐API至.Net Core

如果有從永豐銀行API那邊下載過C#版的豐收款QPay.SampleCode,應該能發現他們目前的專案是用 .NET Framework 4.5.2 進行開發,code也是集中在QPayToolkit.cs這個檔案

今天就來介紹一下sample code使用HttpClient呼叫API的部分
https://ithelp.ithome.com.tw/upload/images/20210923/20131205JTYBndEGAQ.png

微軟在.NET Framework 4.5的時候推出HttpClient,以取代原本的WebClient,但是卻有一些連線端耗盡及DNS異動問題。所以微軟又推出了HttpClientFactory來改善這些情況。

在.Net Core 3.1框架,也有支援HttpClientFactory,首先必須在Startup.csConfigureServices去註冊

services.AddHttpClient();

回去原本的程式碼,在一開始利用相依性注入(DI)

        private readonly IHttpClientFactory _clientFactory;

        public NonceRepository(IHttpClientFactory clientFactory)
        {
            _clientFactory = clientFactory;
        }

接下來就進入到發出Post請求的部分了,其實HttpClientFactoryHttpClient實作的程式碼差異並不會太大~

        public async Task PushMessage()
        {
            // 建立 HttpClient 實例
            var httpClient = _clientFactory.CreateClient();

            httpClient.BaseAddress = new Uri("https://apisbx.sinopac.com/funBIZ/QPay.WebAPI/api/");

            var message = "shopNo=xxx";
            var json = JsonConvert.SerializeObject(message);
            HttpContent contentPost = new StringContent(json, Encoding.UTF8, "application/json");

            await httpClient.PostAsync("Nonce", contentPost);
        }

至於實際在Startup.cs設定HttpClientFactory以及實際調用API的情況,明天會再繼續補充~
See you

連結參考:
幾種使用IHttpClientFactory方法


上一篇
[Day 08] (題外話)談談目標專案設計構想
下一篇
[Day 10] 測試串接
系列文
菜鳥工程師想用C#做出金流微服務是否搞錯了什麼?15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言