【微软技术栈】C#.NET 使用 HttpClient 类发出 HTTP 请求

这篇具有很好参考价值的文章主要介绍了【微软技术栈】C#.NET 使用 HttpClient 类发出 HTTP 请求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文内容

  1. 创建 HttpClient
  2. 发出 HTTP 请求
  3. 处理 HTTP 响应
  4. HTTP 错误处理
  5. HTTP 代理

本文介绍如何使用 HttpClient 类发出 HTTP 请求和处理响应。

 重要

所有示例 HTTP 请求都以下面 URL 之一为目标:

  • https://jsonplaceholder.typicode.com:用于测试和原型设计的免费虚设 API。
  • https://www.example.com:此域用于文档中的说明性示例。

HTTP 终结点通常返回 JavaScript 对象表示法 (JSON) 数据,但并不总是如此。 为方便起见,可选的 System.Net.Http.Json NuGet 包为使用 System.Text.Json 执行自动序列化和反序列化的 HttpClient 和 HttpContent 提供多个扩展方法。 下面的示例提醒人们注意这些扩展的可用位置。

1、创建 HttpClient

下面的大多数示例都重复使用同一 HttpClient 实例,因此只需配置一次。 要创建 HttpClient,请使用 HttpClient 类构造函数。 

// HttpClient lifecycle management best practices:
// https://learn.microsoft.com/dotnet/fundamentals/networking/http/httpclient-guidelines#recommended-use
private static HttpClient sharedClient = new()
{
    BaseAddress = new Uri("https://jsonplaceholder.typicode.com"),
};

前面的代码:

  • 实例化新的 HttpClient 实例作为 static 变量。 根据准则,建议在应用程序的生命周期内重复使用 HttpClient 实例。
  • 将 HttpClient.BaseAddress 设置为 "https://jsonplaceholder.typicode.com"

发出后续请求时,此 HttpClient 实例将使用基址。 若要应用其他配置,请考虑:

  • 设置 HttpClient.DefaultRequestHeaders。
  • 应用非默认 HttpClient.Timeout。
  • 指定 HttpClient.DefaultRequestVersion。

 提示

或者,可使用工厂模式方法创建 HttpClient 实例,该方法允许配置任意数量的客户端并将它们用作依赖关系注入服务。 

2、发出 HTTP 请求

要发出 HTTP 请求,请调用以下任一 API:

HTTP 方法 API
GET HttpClient.GetAsync
GET HttpClient.GetByteArrayAsync
GET HttpClient.GetStreamAsync
GET HttpClient.GetStringAsync
POST HttpClient.PostAsync
PUT HttpClient.PutAsync
PATCH HttpClient.PatchAsync
DELETE HttpClient.DeleteAsync
USER SPECIFIED HttpClient.SendAsync

USER SPECIFIED 请求指示 SendAsync 方法接受任何有效的 HttpMethod。

 警告

发出 HTTP 请求被视为是与网络 I/O 相关的工作。 虽然有同步 HttpClient.Send 方法,但建议改用异步 API,除非有充分的理由不这样做。

2.1 HTTP 内容

HttpContent 类型用于表示 HTTP 实体正文和相应的内容标头。 对于需要正文的 HTTP 方法(或请求方法)POSTPUT 和 PATCH,可使用 HttpContent 类来指定请求的正文。 大多数示例演示如何使用 JSON 有效负载准备 StringContent 子类,但还有针对其他内容 (MIME) 类型的其他子类。

  • ByteArrayContent:提供基于字节数组的 HTTP 内容。
  • FormUrlEncodedContent:为使用 "application/x-www-form-urlencoded" MIME 类型编码的名称/值元组提供 HTTP 内容。
  • JsonContent:提供基于 JSON 的 HTTP 内容。
  • MultipartContent:提供使用 "multipart/*" MIME 类型规范进行序列化的 HttpContent 对象的集合。
  • MultipartFormDataContent:为使用 "multipart/form-data" MIME 类型进行编码的内容提供容器。
  • ReadOnlyMemoryContent:提供基于 ReadOnlyMemory<T> 的 HTTP 内容。
  • StreamContent:提供基于流的 HTTP 内容。
  • StringContent:提供基于字符串的 HTTP 内容。

HttpContent 类还用于表示 HttpResponseMessage 的响应正文,可通过 文章来源地址https://www.toymoban.com/news/detail-761401.html

到了这里,关于【微软技术栈】C#.NET 使用 HttpClient 类发出 HTTP 请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在 Node.js 中发出 HTTP 请求的 5 种方法

    学习如何在 Node.js 中发出 HTTP 请求可能会让人感到不知所措,因为有数十个可用的库,每个解决方案都声称比上一个更高效。一些库提供跨平台支持,而另一些库则关注捆绑包大小或开发人员体验。 在这篇文章中,我们将探讨在 Node.js 中发出 HTTP 请求的五种最流行的方法,并

    2024年02月04日
    浏览(46)
  • 【Angular中的HTTP请求】- HttpClient 详解

            大多数前端应用都要通过 HTTP 协议与服务器通讯,才能下载或上传数据并访问其它后端服务。Angular 给应用提供了一个 HTTP 客户端 API,也就是 @angular/common/http 中的 HttpClient 服务类。         要想使用 HttpClient ,就要先导入 Angular 的 HttpClientModule 。一般都是在根

    2024年02月08日
    浏览(39)
  • C#中通过HttpClient发送Post请求

    C#中HttpClient进行各种类型的传输 我们可以看到, 尽管PostAsync有四个重载函数, 但是接受的都是HttpContent, 而查看源码可以看到, HttpContent是一个抽象类 那我们就不可能直接创建HttpContent的实例, 而需要去找他的实现类, 经过一番研究, 发现了, 如下四个: MultipartFormDataContent、FormUrl

    2024年02月02日
    浏览(46)
  • HttpClient:HTTP GET请求的服务器响应输出

    前言 在现代软件开发中,与网络通信相关的技术变得愈发重要。Java作为一种强大而灵活的编程语言,提供了丰富的工具和库,用于处理各种网络通信场景。本文将聚焦在Java中使用HttpClient库发送HTTP GET请求,并将服务器的响应数据进行输出,同时加入代理服务器的配置,以应

    2024年02月20日
    浏览(45)
  • HTTP POST接口带参数的HttpClient请求方法和调用

    接口自动化测试,今天遇到POST接口带参数,参数在url上,发现原来的工具类中没有该方法,重新调试加上。  doPost方法如下: 参考: [Java 接口自动化框架]httpclient4.5.3(CloseableHttpClient) https的工具类HttpsClientUtils

    2024年02月06日
    浏览(47)
  • 提示“无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动”,如何解决?

        在aspx网站部署过程中,出现“无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动”的提示,如下图,如何解决? 解决方案1: Web.Config里面 把sessionState 的mode改为\\\"InProc\\\" ;  mode 设置将决定Session信息存储位置,可设置为下面几种类型

    2024年02月15日
    浏览(47)
  • 【微软技术栈】C#.NET 中使用依赖注入

    先决条件 创建新的控制台应用程序 添加接口 添加默认实现 添加需要 DI 的服务 为 DI 注册服务 结束语 本文介绍如何在 .NET 中使用依赖注入 (DI)。 借助 Microsoft 扩展,可通过添加服务并在 IServiceCollection 中配置这些服务来管理 DI。 IHost 接口会公开 IServiceProvider 实例,它充

    2024年02月04日
    浏览(37)
  • 使用C#编写HTTP POST请求方法

    使用C#编写HTTP POST请求方法 在C#中,我们可以使用HttpClient类来发送HTTP请求。下面是一个示例代码,演示如何使用C#发送HTTP POST请求:

    2024年02月05日
    浏览(49)
  • Spring Boot进阶(72):【教程】用Spring Boot和HttpClient实现高效的HTTP请求

      随着系统规模的不断扩大和复杂度的提升,异步通信这种模式越来越被广泛应用于各种分布式系统中。RocketMQ作为一个高性能、高可靠性、分布式消息队列,得到了众多企业的青睐。本文将介绍如何使用Spring Boot整合RocketMQ,实现异步通信。   那么,具体如何实现呢?这

    2024年02月09日
    浏览(45)
  • 使用C#发送HTTP的Get和Post请求

    2024年02月07日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包