网站首页 > 基础教程 正文
C# HttpClient 是一个用于发送 HTTP 请求并接收响应的类。它是 .NET Framework 中的一部分,并在 .NET Core 和 .NET 5+ 中得到了改进和增强。
使用HttpClient可以执行各种 HTTP 操作,如发送 GET、POST、PUT、DELETE 等请求,并处理响应数据。它提供了许多方法和属性,可以自定义请求、设置请求头、处理响应等。
以下是一些常见的 HttpClient 功能和用法:
- 发送 GET 请求:
using System;
using System.Net.Http;
using System.Threading.Tasks;
public class Program
{
public static async Task Main()
{
using (HttpClient client = new HttpClient())
{
HttpResponseMessage response = await client.GetAsync("https://api.example.com");
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
}
}
在示例中创建一个 HttpClient 实例,并使用 GetAsync 方法发送 GET 请求。然后使用 ReadAsStringAsync 方法将响应内容读取为字符串,并将其打印到控制台。
- 发送 POST 请求:
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
public class Program
{
public static async Task Main()
{
using (HttpClient client = new HttpClient())
{
string requestBody = "{\"username\":\"admin\",\"password\":\"123456\"}";
StringContent content = new StringContent(requestBody, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync("https://api.example.com/login", content);
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
}
}
在示例中使用 PostAsync 方法发送一个 POST 请求,并将请求体作为 JSON 字符串发送。
- 自定义请求头和超时设置:
using System;
using System.Net.Http;
using System.Threading.Tasks;
public class Program
{
public static async Task Main()
{
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", "Bearer token");
client.Timeout = TimeSpan.FromSeconds(10);
HttpResponseMessage response = await client.GetAsync("https://api.example.com");
string responseBody = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseBody);
}
}
}
在示例中通过 DefaultRequestHeaders 属性添加自定义的 Authorization 请求头,并使用 Timeout 属性设置请求的超时时间。
这只是 HttpClient 的一些常见用法示例,您可以根据需要进行更多的自定义和配置。
在使用 HttpClient 时,应该使用 using 语句来确保 HttpClient 对象在使用完毕后被正确释放。
在项目中使用时,一般用单例模式或者依赖注入的方式。
- 上一篇: AI替代程序员之C#高级编程列表(关注分享细节)
- 下一篇: 代码江湖:C# 侠客的修炼之路与侠义之心
猜你喜欢
- 2024-12-28 CSnakes:在.NET项目中嵌入Python代码的工具
- 2024-12-28 巧用泛型设计模式,提升代码质量新高度
- 2024-12-28 巅峰对决!Spring Boot VS .NET 6 巅峰对决之干碎龙王短剧全集完整版第5集
- 2024-12-28 基于C#开发的物联网设备通讯协议客户端终身开源免费
- 2024-12-28 C# Flurl 库浅析(一) c#folderbrowserdialog
- 2024-12-28 C# Lazy的缺点 c#的介绍
- 2024-12-28 微服务——webapi实现,脱离iis,脱离tomcat
- 2024-12-28 231.C# 跨平台服务开发 c++跨平台开发
- 2024-12-28 C# 和 .NET 开发的 10 种基本模式
- 2024-12-28 基于C# 开发的物联网设备通讯协议客户端
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)