.Net Core Console 项目如何使用 HttpClient 与 Web 服务通信

简介: .Net Core Console 项目如何使用 HttpClient 与 Web 服务通信

前言

HttpClient 类是在 .NET Framework 4.5 和 .NET Core 中引入的新的 HTTP 客户端类,是 .NET 用于发送和接收 HTTP 请求的类,相比之前的 WebRequestHttpWebRequest, 它提供了现代的、易用的 API,并且具有更好的性能和扩展性,使得在 .NET 应用程序中与 Web 服务进行通信变得更加方便。

通过 HttpClient,可以发送 GET、POST、PUT、DELETE 等类型的 HTTP 请求到指定的 Web Api,可以设置请求头、请求体、超时时间等参数,接收 Web 服务返回的 HTTP 响应,包括响应头、响应体等信息,并且 HttpClient 支持在异步环境中高效地发送和接收 HTTP 请求。

.Net Core 使用 HttpClient 的方法跟 .NET Framework 大同小异,如果您希望了解 .Net Core 是如何使用 HttpClient 的, 那么本文能给你一个很好的帮助。

Step By Step 步骤

  1. 创建一个 ASP.NET Core Console 项目
  2. 从 Nuget 安装以下包

Microsoft.Extensions.DependencyInjection

3.打开 Program.cs,引入依赖注入命名空间,依赖注入 HttpClient(留意注释

using Microsoft.Extensions.DependencyInjection;
ServiceCollection services = new ServiceCollection();
// 依赖注入 HttpClient
services.AddHttpClient();
// 依赖注入 NetUtil 类 
services.AddScoped<NetUtil>();
// 调用 NetUtil 类的 Test 方法
using (var sp = services.BuildServiceProvider())
{
  using (var scope = sp.CreateScope())
  {
    var spScope = scope.ServiceProvider;
    var demo = spScope.GetRequiredService<NetUtil>();
    await demo.Test();
  }
}

4.新建 NetUtil 类,依赖注入 IHttpClientFactory 使用 HttpClient(留意注释

using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using System.Text;
class NetUtil
{
  // 声明IHttpClientFactory
  private readonly IHttpClientFactory clientFactory;
  // 构造方法注入 IHttpClientFactory
  public NetUtil(IHttpClientFactory clientFactory)
  {
    this.clientFactory = clientFactory;
  }
  public async Task Test()
  {
    // 事先准备的一个 Web Api
    var url = "http://127.0.0.1:54327/net/mytest";
    var intervalTime = optIntervalSettings.Value;
    await GetEquip(url);
  }
  private async Task GetApiContent(UrlSettings url)
  {
    var client = clientFactory.CreateClient();
    // 配置 Request 请求头
    client.MaxResponseContentBufferSize = 2560000;
    client.DefaultRequestHeaders.Add("Accept", "*/*");
    client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate");
    client.DefaultRequestHeaders.Add("Accept-Language", "zh-CN,zh;q=0.9");
    client.DefaultRequestHeaders.Add("Connection", "keep-alive");
    client.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36");
    // 异步发送 Get 请求
    var res = await client.GetAsync(url);
    
    // 确保 HTTP 请求成功,提高程序的可靠性
    res.EnsureSuccessStatusCode();
    
    // 异步读取响应消息
    var body = await res.Content.ReadAsStringAsync();
    Console.WriteLine(body);
  }
}

5.至此,一个简单的请求程序就完成了,可以运行并在 Postman 中进行测试

结语

总的来说,.NET Core HttpClient 是一个功能强大且易用的与 Web Api 通信的类,而且可以通过自定义 DelegatingHandlerHttpMessageHandler 扩展功能和自定义处理,是推荐的发送 HTTP 请求的类。

在使用时,应该尽量复用 HttpClient 实例,因为在短时间内频繁创建和销毁 HttpClient 实例可能会导致资源泄漏和性能问题,合理配置和处理 HTTP 请求和响应,以达到更好的性能和可靠性。

您觉得 HttpClient 怎么样呢?欢迎留言讨论。

我是老杨,一个奋斗在一线的资深研发老鸟,让我们一起聊聊技术,聊聊人生。

都看到这了,求个点赞、关注、在看三连呗,感谢支持。


相关文章
|
13天前
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
61 9
|
8天前
|
开发框架 前端开发 API
C#/.NET/.NET Core优秀项目和框架2024年9月简报
C#/.NET/.NET Core优秀项目和框架2024年9月简报
|
14天前
|
前端开发 Java API
JAVA Web 服务及底层框架原理
【10月更文挑战第1天】Java Web 服务是基于 Java 编程语言用于开发分布式网络应用程序的一种技术。它通常运行在 Web 服务器上,并通过 HTTP 协议与客户端进行通信。
14 1
|
15天前
|
应用服务中间件 网络安全 nginx
nginx作为web服务以及nginx.conf详解
nginx作为web服务以及nginx.conf详解
|
6天前
|
XML 关系型数据库 MySQL
Web Services 服务 是不是过时了?创建 Web Services 服务实例
本文讨论了WebServices(基于SOAP协议)与WebAPI(基于RESTful)在开发中的应用,回顾了WebServices的历史特点,比较了两者在技术栈、轻量化和适用场景的差异,并分享了使用VB.net开发WebServices的具体配置步骤和疑问。
11 0
|
8天前
|
存储 消息中间件 前端开发
.NET常见的几种项目架构模式,你知道几种?
.NET常见的几种项目架构模式,你知道几种?
|
8天前
|
边缘计算 开发框架 人工智能
C#/.NET/.NET Core优秀项目和框架2024年8月简报
C#/.NET/.NET Core优秀项目和框架2024年8月简报
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
本文讨论了在基于.NET 6和.NET Framework的WinForms项目中添加图表控件的不同方法。由于.NET 6的WinForms项目默认不包含Chart控件,可以通过NuGet包管理器安装如ScottPlot等图表插件。而对于基于.NET Framework的WinForms项目,Chart控件是默认存在的,也可以通过NuGet安装额外的图表插件,例如LiveCharts。文中提供了通过NuGet添加图表控件的步骤和截图说明。
winform .net6 和 framework 的图表控件,为啥项目中不存在chart控件,该如何解决?
|
15天前
|
Cloud Native API C#
.NET云原生应用实践(一):从搭建项目框架结构开始
.NET云原生应用实践(一):从搭建项目框架结构开始
|
16天前
|
云安全 SQL 安全
数字时代下的Web应用程序安全:漏洞扫描服务的功能与优势
在当今这个数字化时代,Web应用程序不仅是企业与用户之间互动的桥梁,更是企业展示服务、传递价值的核心平台。然而,随着技术的不断进步,Web应用程序的复杂性也在不断增加,这为恶意攻击者提供了可乘之机。安全漏洞的频发,如SQL注入、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等,严重威胁着企业的数据安全、服务稳定性乃至经济利益。在这样的背景下,漏洞扫描服务作为一道重要的安全防线,显得尤为重要。本文将深入探讨漏洞扫描服务在面对Web应用程序安全问题时,所具备的功能优势。