浅析HttpClient

C#中通过HttpClient发送Post请求 C#中HttpClient进行各种类型的传输 我们可以看到, 尽管PostAsync有四个重载函数, 但是接受的都是HttpContent, 而查看源码可以看到, HttpContent是一个抽象类 那我们就不可能直接创建HttpContent的实例, 而需要去找他的实现类, 经过一番研究, 发现了, 如下四个: MultipartFormDataContent、FormUrlEncodedContent、StringContent、StreamContent 和上面的总结进... 阅读详情

一、IHttpClientFactory来CreateClient

1.构造IHttpClientFactory对象

public class ClientServiceClient
    {
        IHttpClientFactory _httpClientFactory;
        public ClientServiceClient(IHttpClientFactory httpClientFactory)
        {
            _httpClientFactory = httpClientFactory;
        }
        public async Task<string> Get()
        {
            var client = _httpClientFactory.CreateClient();
            return await client.GetStringAsync("http://localhost:6848/ClientService");
        }
    }

2.在ConfigureServices中注册服务

代码如下(示例):

services.AddMvc().AddControllersAsServices();
            services.AddHttpClient();
            services.AddScoped<ClientServiceClient>();

3.在ClientController中调用

 ClientServiceClient _clientServiceClient;
        private readonly ILogger<ClientController> _logger;

        public ClientController(ILogger<ClientController> logger, ClientServiceClient clientServiceClient)
        {
            _logger = logger;
            _clientServiceClient = clientServiceClient;
        }

        [HttpGet("Get")]
        public async Task<string> Get()
        {
            return await _clientServiceClient.Get();
        }

二、命名HttpClient

1.构造IHttpClientFactory对象

 public class NamedClientServiceClient
    {
        private const string ClientName = "NamedClientServiceClient";
        IHttpClientFactory _httpClientFactory;
        public NamedClientServiceClient(IHttpClientFactory httpClientFactory)
        {
            _httpClientFactory = httpClientFactory;
        }
        public async Task<string> Get()
        {
            var client = _httpClientFactory.CreateClient(ClientName);
            return await client.GetStringAsync("/ClientService");
        }
             
    }

2.在ConfigureServices中注册服务

代码如下(示例):
CustomtReqDelegatingHandler:

 public class CustomtReqDelegatingHandler:DelegatingHandler
    {
        protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            request.Headers.Add("custom-id", Guid.NewGuid().ToString());
            return  await base.SendAsync(request, cancellationToken);
        }
    }

注册服务和配置地址api

services.AddSingleton<CustomtReqDelegatingHandler>();
            services.AddHttpClient("NamedClientServiceClient", client =>
            {
                client.DefaultRequestHeaders.Add("ClientName", "FiseaTest");
                client.BaseAddress = new Uri("http://localhost:6848");
            }).SetHandlerLifetime(TimeSpan.FromMinutes(20))
            .AddHttpMessageHandler(provider => { return provider.GetService<CustomtReqDelegatingHandler>(); });

           services.AddScoped<NamedClientServiceClient>();

3.在ClientController中调用

 [HttpGet("NamedGet")]
        public async Task<string> NamedGet([FromServices]NamedClientServiceClient service)
        {
            return await service.Get();
        }

三、类型 HttpClient

1.构造IHttpClientFactory对象

 public class TypeClientServiceClient
    {
        System.Net.Http.HttpClient _httpClient;
        public TypeClientServiceClient(System.Net.Http.HttpClient httpClient)
        {
            _httpClient = httpClient;
        }
        public async Task<string> Get()
        {
            return await _httpClient.GetStringAsync("/ClientService");
        }
    }

2.在ConfigureServices中注册服务

代码如下(示例):

services.AddHttpClient<TypeClientServiceClient>(client=> {
                client.BaseAddress = new Uri("http://localhost:6848");
            });

3.在ClientController中调用

  [HttpGet("TypeGet")]
        public async Task<string> TypeGet([FromServices]TypeClientServiceClient service)
        {
            return await service.Get();
        }

四、源码下载

下载

【开源~磁悬浮】零代码,纯硬件闭环:从霍尔到H桥的磁悬浮稳定术 本文详细介绍了如何不依赖任何代码,仅通过模拟和数字电路的组合,实现一个完整的磁悬浮闭环控制系统。从霍尔传感器检测位置,到运放电路进行信号调理与模拟PID控制,再到H桥驱动电磁铁执行纠偏,全程使用基础电子元器件搭建。文章深入剖析了系统原理、电路设计、调试技巧与实践经验,展现了纯硬件实现自动控制的独特魅力与挑战。 阅读详情

相关推荐

PINN for PDE(偏微分方程)4 - 反向问题 - Burgers’ equation

PINN for PDE(偏微分方程)4 - 反向问题 - Burgers’ equation

m0_62030579的博客 3004

C# Winform中使用 IHttpClientFactory的步骤介绍

HttpClientFactory是ASP.NET Core 2.1中引入的一个新特性,它可以帮助我们管理HttpClient实例。在Winform应用程序中,我们也可以使用HttpClientFactory来管理HttpClient实例。上面安装Microsoft.Extensions.Http的NuGet包会连Microsoft.Extensions.DependencyInjectionNuGet包一起安装。第一种方法在C#中,HttpClient是一个常用的类,用于发送HTTP请求。

m0_58015531的博客 5185

Android开发者必看:5分钟搞定MQTT客户端连接EMQX服务器(附完整代码)

本文为Android开发者提供了一份快速实现MQTT客户端连接EMQX服务器的实战指南。通过引入Eclipse Paho SDK,详细讲解了从项目配置、权限申请到核心连接、主题订阅与消息发布的完整流程,并附有即拿即用的Kotlin代码,帮助开发者在物联网应用中高效集成轻量级实时通信功能。

weixin_29228781的博客 271

.net core 中构造函数注入 IHttpClientFactory 和 HttpClient 的区别,使用 HttpClient 注入有什么隐患,以及如何证明?

分享 .net core 中通过 IHttpClientFactory 工厂来使用 HttpClient 的最佳打开方式。

ChaITSimpleLove的博客 2008

Oracle监听配置

Oracle监听配置## 标题 选择“监听程序配置”,然后下一步。 选择重新配置,然后下一步/。 不用管,按下一步。 下一步。 选择“否”,下一步。 选择"本地net服务名配置",然后下一步。 选择“重新配置”,然后下一步。 服务名 是"Oracle",然后下一步。 主机为你的IP地址,在doc系统下通过"ipconfig"获取IP地址。然后输入,然后下一步。 选择“是,进行测试...

m0_46079215的博客 807

windows10 + wsl2安装docker

一、安装wsl https://docs.microsoft.com/zh-cn/windows/wsl/install-win10 1.1以管理员身份运行powershell 1.2执行如下命令 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 1.3重启电脑 1.4 重启电脑后,如果需要安装wsl2, 则安装官方文档继续后续操作,因我...

happytree001的博客 1570

.Net Core 使用IHttpClientFactory请求

实例的自定义类,该自定义类封装了通过HTTP协议调用所有终结点的逻辑。整体说明:这里主要是借助依赖注入程序,在控制台上获取需要的相关类,然后进行使用对应方法的调用。的非静态实例包装在自定义类中,并使其成为单例类。是在.Net Core 2.1引入的,它提供了一个命名,配置和创建。实例,以下是一个不错的选择。,而且可以很友好的和 DI 容器结合使用,更为灵活。实例的核心功能,并能自动管理实例的池化和生命周期。也有一些缺点,主要与手动管理实例的生命周期有关。只是一个帮助类,用于创建使用提供的处理程序配置的。

极客神殿 2646

图形学基础|屏幕空间反射(SSR)

图形学基础|屏幕空间反射(SSR) 文章目录图形学基础|屏幕空间反射(SSR)一、前言二、反射技术概述2.1 环境贴图反射2.2 IBL反射2.3 平面反射(Planar Reflections)2.4 屏幕空间反射(Screen Space Reflection)2.4.1 SSR的基本原理2.4.2 SSR的优缺点三、SSR(Screen-Space Reflection)实现3.1 Efficient GPU Screen-Space Ray Tracing3.1.1 2D Raymarching v

【黑键】 3万+

利用IHttpClientFactory工厂来创建HttpClient

在一个采用依赖注入框架的应用中,我们一般不太推荐利用手工创建的HttpClient对象来进行HTTP调用,使用的HttpClient对象最好利用注入的IHttpClientFactory工厂来创建。前者引起的问题,以及后者带来的好处,将通过如下这几个演示程序展现出来。IHttpClientFactory类型由“Microsoft.Extensions.Http”这个NuGet包提供,“Microsoft.NET.Sdk.Web”SDK具有该包的默认引用。如果采用“Microsoft.NET.Sdk”这个SD

HongYu012的博客 2129

灰色预测GM(1,n)模型_python

灰色系统理论及其应用系列博文: 一、灰色关联度分析法(GRA)_python 二、灰色预测模型GM(1,1) 文章目录一、GM(1,n)算法二、示例2.1 数据:2.2 代码_使用GM(1,n)城市用水总量2.3 结果分析 一、GM(1,n)算法 二、示例 注:数据均来自论文《基于灰色系统理论的贵阳市城市用水总量预测》 2.1 数据: data.csv 年份,城区人口,建成区面积,供水总量,用水人口,人口综合用水指标,城市用水总量 2002, 191.85, 98.00, 26396.00,

qq_34229228的博客 1万+

小米汽车车载多摄像头视频链路深度解析 | MAX96792/MAX96724/MAX96781 实战分享

通过合理的输入输出规划 + 虚拟通道管理 + 加串行策略,可以在成本和性能之间取得最佳平衡,这就是多摄像头系统设计的核心精髓。

weixin_43199439的博客 1548

HttpURLConnection与HttpClient浅析

HttpURLConnection与HttpClient浅析1. GET请求与POST请求HTTP协议是现在Internet上使用得最多、最重要的协议了,越来越多的Java应用程序需要直接通过HTTP协议来访问网络资源。在介绍HttpURLConnection前,我们还是再来说一下URL请求最常用的两种方式:GET请求与POST请求。GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中

小明的专栏 1万+

【Linux】软件控制USB重新上电、加载:usbreset、hubpower、uhubctl

使用命令控制USB的供电、复位

郭老二 2188

httpclient 工具类_浅析 jdk11 中 HttpClient 的使用

前期准备JDK 版本 : OpenJDK 11.0.1IDE : idea 2018.3HttpClient 简介java.net.http.HttpClient 是 jdk11 中正式启用的一个 http 工具类(其实早在 jdk9 的时候就已经存在了,只是处于孵化期),官方寓意为想要取代 HttpURLConnection 和 Apache HttpClient 等比较古老的开发工具。新增的 ...

weixin_35959421的博客 633

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 浅析Mediator
fisea
博客等级 码龄19年 40粉丝 197原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值