[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方法


<<:  Raspberry pi 与云端的连结

>>:  Day 22:多国语言

贩子去赌场了

各位看官不好意思,贩子发现其实可以从9/15才开始发废文,原本想说从9/1开始写,但发现底子不够,很...

Day8 Redis组态档设定-KEYS TRACKING/SECURITY/CLIENT

Redis.config KEYS TRACKING tracking-table-max-keys...

Day12

继续看范例fig06_12.cpp下半段,一开始定义三个函式原型void useLocal(), v...

{DAY 12} NumPy 学习笔记(上)

前言 今天来到自学NumPy? 之前在学校上过基础的NumPy 今天要从youtube上找影片完整...

[Day 22] 针对API的单元测试(二)

我们昨天已经测试了一个Json的API, 那我们今天将测试方法改成这样 public functio...