浅析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();
        }

四、源码下载

下载

【入门篇】第五章 第一次与 AI Agent 交互 本文介绍了OpenClaw中最基本的用户与AI Agent交互方式,剖析了Agent和Gateway两个核心组件的作用,通过简单示例展示了从用户请求到结果返回的完整执行流程,说明了最小交互过程对验证系统可用性的重要意义,为后续学习复杂任务执行机制奠定基础。 阅读详情

相关推荐

多周期路径及set_multicycle_path详解

默认情况下,每条路径都被定义为单周期,即源触发器在时钟的任一边沿启动(launch)的数据都应该由目的触发器在时钟的下一上升沿捕获(capture)。 有的设计需要在数据被捕获前提供一些额外的周期,这类路径被称为多周期路径。 一、set_multicycle_path命令 命令格式如下: set_multicycle_path .........

Jackiezhang1993的博客 4万+

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

Docker部署OnlyOffice踩坑实录:解决editor.bin下载失败的3种姿势

本文详细解析了Docker部署OnlyOffice时editor.bin下载失败的常见原因,并提供了三种核心解决方案。重点剖析了容器网络配置、Nginx反向代理(特别是proxy_pass设置)以及安全策略调整,帮助开发者彻底解决静态资源加载问题,确保文档协作平台稳定运行。

weixin_29281941的博客 873

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

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

ChaITSimpleLove的博客 2008

中国30米逐年植被净初级生产力(NPP)数据集(1982年至今CASA模型)

1.3 气温、降水、地表太阳辐射数据 气温和降水数据月度空间插值数据是基于全国2400多个站点的日观测数据,在计算各气象要素月值的基础上,基于Anusplin软件插值生成的1982年以来各月度30米分辨率气温和降水栅格数据,插值过程中引入高程作为协变量。气温单位为℃,降水单位为mm。1.2 土地覆盖数据 土地覆盖数据来源于1985 年-2020年全球30米精细地表覆盖动态监测产品,该数据集包含29个地表覆盖类型,进行拼接、裁剪、重分类和重采样处理,获得8期250米分辨率的植被类型数据。

地球资源数据云的官方博客 2839

yandex 不定长旋转验证码PPOCR识别案例

可以看到,此种验证码非常变态,旋转角度不固定,干扰背景不固定,字符长度不固定,弯曲形变都是不固定的,在人眼都很难分辨验证码的情况下,其实都是对于模型来讲,也是比较困难的哈哈,传统验证码可能小几百张就能达到很好的效果了,是因为,验证码难度比较简单,通常都是4,6位定长,但是对于模型而言,无非就是增加数据量。由于该验证码的复杂度,自己写一个rcnn或者其他模型,来优化改数据集进行训练变的尤为困难复杂,所以这里强烈推荐百度飞桨的开源模型。在得到较好的loss后,导出模型。如有侵犯,请联系作者下架。

码王吴彦祖的博客 724

.Net Core 使用IHttpClientFactory请求

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

极客神殿 2646

Windows2008使用-解决漏洞-CVE-2010-2730

随着硬件的升级,操作系统也逐渐进行了版本更新。目前阶段,Windows2016Server、Windows2022Server逐渐成为了以Windows系列的服务器平台系统。对于有些应用而言,由于其业务的固定,可能仍只能运行在Windows2008Server或者Windows2012Server上。有时候我们为安全需要,需要将相关的操作系统涉及的漏洞做修复。最近碰到在一个Windows2008R2 的操作系统漏洞CVE-2010-2730,一顿操作,终于找到了合适的方案,这里分享给大家。

mystonelxj的博客 2314

利用IHttpClientFactory工厂来创建HttpClient

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

HongYu012的博客 2129

iOS逆向之深入解析Hook的原理方法和安全防护

Hook简介 Hook就是一种改变程序执行流程的一种技术的统称; 一段程序的执行流程是 A --> B --> C,现在我们在 A 和 B 之间插入一段代码或者直接改变 B ,这样程序原有的执行流程就发生了改变。如下图所示: Hook的方式:Method Swizzle,fishhook,Cydia Substrate; Hook原理 一、Method Swizzle 原理 利用OC的Runtime特性,动态去改变SEL(方法编号)和IMP(方法实现)的对应关系,达到OC方法调用流程改变

╰つ栺尖篴夢ゞ 2万+

Esp32蓝牙Hid调用方案 http执行设备、鼠标、键盘相关操作

本文主要介绍 Esp32 蓝牙 Hid 相关的多种操作方式,详细的设备、鼠标、键盘相关操作的 http 调用方法。下面是整理出的所有 http 调用方法和 rhino 引擎方式。本机调用的话直接使用http://localhost:8080 如果是局域网调用则使用软件里的地址 比如我的是http://192.168.1.5:8080。文件地址: https://www.123865.com/s/Qtm4jv-xyZbd?使用前需要一块烧录好的ESP32板子并在手机安装好embedded软件用于蓝牙通信。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 569

HttpURLConnection与HttpClient浅析

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

小明的专栏 1万+

基于YOLOv8的水果新鲜程度检测系统设计与实现

数据采集与预处理模块:负责收集水果图像数据并进行标注和增强深度学习模型:基于YOLOv8的目标检测模型新鲜度评估模块:根据检测结果评估水果新鲜程度用户界面:提供友好的交互界面系统集成:将各模块整合为完整系统水果新鲜程度检测需要包含多种水果在不同新鲜度状态下的图像数据集。:包含5种常见水果(苹果、香蕉、橙子、葡萄、草莓)在不同新鲜度下的图像包含约8,000张图像,分为新鲜和腐烂两类AgriVision:大型农业图像数据集,包含水果检测和分类任务Fruit-360:包含120种水果的高质量图像。

YOLO 445

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

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

weixin_35959421的博客 633

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值