.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 怎么样呢?欢迎留言讨论。

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

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


相关文章
|
7月前
|
开发框架 监控 安全
Windows Defender 导致 Web IIS 服务异常停止排查
某日凌晨IIS服务异常停止,经查为Windows Defender安全补丁KB2267602触发引擎更新,导致系统资源波动,进而引发应用池回收。确认非人为操作,系统无重启。通过分析日志与监控,定位原因为Defender更新后扫描加重负载。解决方案:将IIS及.NET相关路径添加至Defender排除列表,避免业务影响。
802 116
|
8月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
764 1
|
9月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
1010 64
|
11月前
|
开发框架 安全 前端开发
Go Web开发框架实践:模板渲染与静态资源服务
Gin 是一个功能强大的 Go Web 框架,不仅适用于构建 API 服务,还支持 HTML 模板渲染和静态资源托管。它可以帮助开发者快速搭建中小型网站,并提供灵活的模板语法、自定义函数、静态文件映射等功能,同时兼容 Go 的 html/template 引擎,具备高效且安全的页面渲染能力。
|
11月前
|
开发框架 JSON 中间件
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
Gin 是一个高效、轻量级的 Go 语言 Web 框架,支持中间件机制,非常适合开发 RESTful API。本文从安装到进阶技巧全面解析 Gin 的使用:快速入门示例(Hello Gin)、定义 RESTful 用户服务(增删改查接口实现),以及推荐实践如参数校验、中间件和路由分组等。通过对比标准库 `net/http`,Gin 提供更简洁灵活的开发体验。此外,还推荐了 GORM、Viper、Zap 等配合使用的工具库,助力高效开发。
|
10月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
861 0
|
人工智能 安全 程序员
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
1462 12
|
11月前
|
存储 缓存
.NET 6中Startup.cs文件注入本地缓存策略与服务生命周期管理实践:AddTransient, AddScoped, AddSingleton。
记住,选择正确的服务生命周期并妥善管理它们是至关重要的,因为它们直接影响你的应用程序的性能和行为。就像一个成功的建筑工地,工具箱如果整理得当,工具选择和使用得当,工地的整体效率将会大大提高。
364 0
.NetWeb集成cas
仅供参考
1087 0
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
664 5