# HttpClientLite **Repository Path**: Ausername/HttpClientLite ## Basic Information - **Project Name**: HttpClientLite - **Description**: HttpClientLite 是一个基于 .NET 的高可扩展 HTTP 客户端管理库,提供了对 HTTP 请求的全面管理,包括: 请求/响应配置 异常处理 支持同步与异步操作 丰富的扩展方法,支持 GET、POST、PUT 等操作 支持 FormData 和 JSON 数据传输 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-12-07 - **Last Updated**: 2025-08-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: Http, HttpClient, HttpManager, dotNET, post ## README # HttpClientLite ## 介绍 HttpClientLite 是一个基于 .NET 的高可扩展 HTTP 客户端管理库,提供了对 HTTP 请求的全面管理,包括: - 请求/响应配置 - 异常处理 - 支持同步与异步操作 - 丰富的扩展方法,支持 GET、POST、PUT 等操作 - 支持 FormData 和 JSON 数据传输 ## 特性 1. **高度模块化**:通过配置和处理器轻松扩展功能。 2. **请求克隆**:支持对 `HttpRequestMessage` 的克隆,便于重试或日志处理。 3. **扩展方法**:提供常用 HTTP 请求的简化方法。 4. **异常管理**:支持自定义异常处理逻辑。 ## 软件架构 支持net4.6.2、net4.7.2、net4.8.1、net6、net8、net9 ## 安装教程 dotnet add package HttpClientLite.Extensions ## 使用说明 ~~~csharp using HttpClientLite; using HttpClientLite.Extensions; using HttpClientLite.Handlers.interfaces; using HttpClientLite.Configurations.interfaces; var httpManager = new HttpManager("https://api.example.com"); ~~~ #### 发送GET请求 ~~~csharp var response = await httpManager.GetAsync("/endpoint"); string responseBody = await response.Content.ReadAsStringAsync(); Console.WriteLine(responseBody); ~~~ #### 发送 POST 请求 (JSON 数据) ~~~csharp var requestBody = new { key = "value" }; var response = await httpManager.PostJsonAsync("/endpoint", requestBody); ~~~ #### 添加异常处理 ~~~csharp httpManager.HttpManagerExceptionHandler((exception, response) => { Console.WriteLine($"Error: {exception.Message}"); }); ~~~ ### 配置与扩展 #### 配置 HttpManager ~~~csharp httpManager.HttpManagerConfiguration(manager => { manager.BaseAddress = "https://api.customdomain.com"; }); ~~~ 或者 自定义类继承并实现 **HttpClientLite.Configurations.interfaces.IHttpManagerConfiguration** ~~~csharp httpManager.Configuration(new CustomHttpManagerConfiguration()); ~~~ #### 配置 HttpClient ~~~csharp httpManager.HttpClientConfiguration(client => { client.Timeout = TimeSpan.FromSeconds(30); client.DefaultRequestHeaders.Add("Authorization", "Bearer token"); }); ~~~ 或者 自定义类继承并实现 **HttpClientLite.Configurations.interfaces.IHttpClientConfiguration** ~~~csharp httpManager.Configuration(new CustomHttpClientConfiguration()); ~~~ #### 配置 HttpRequestMessage ~~~csharp httpManager.RequestMessageConfiguration(request => { request.Headers.Add("Custom-Header", "CustomValue"); }); ~~~ 或者 自定义类继承并实现 **HttpClientLite.Configurations.interfaces.IRequestMessageConfiguration** ~~~csharp httpManager.Configuration(new CustomRequestMessageConfiguration()); ~~~ #### 自定义响应处理 ~~~csharp httpManager.ResponseMessageHandler((manager, client, request, response, token) => { if (!response.IsSuccessStatusCode) { Console.WriteLine($"Request failed with status code {response.StatusCode}"); } return response; }); ~~~ 或者 自定义类继承并实现**HttpClientLite.Handlers.interfaces.IResponseMessageHandler** ~~~csharp httpManager.Handler(new CustomResponseMessageHandler()); ~~~ ### 发送文件 ~~~csharp var content = new MultipartFormDataContent(); content.AddFile("file", "example.txt", File.ReadAllBytes("example.txt")); var request = new HttpRequestMessage(HttpMethod.Post, "/upload") { Content = content }; var response = await httpManager.SendAsync(request); ~~~ 或者 ~~~csharp Stream stream = File.OpenRead("example.txt"); content.AddFile("file", "example.txt", stream); ~~~ ### 扩展方法一览 目前实现比较常用的: #### HttpClientLite.Extensions.HttpManagerExtensions | 方法 | 描述 | | -----|------| | GetAsync | 异步发送 GET 请求 | PostJsonAsync | 异步发送 POST JSON 请求 | PostFormDataAsync| 异步发送 POST FormData 请求 | PutJsonAsync| 异步发送 PUT JSON 请求 | PutFormDataAsync| 异步发送 PUT FormData 请求 ### 示例 #### 综合示例 ~~~csharp using System.Web; using System.Net.Http; using HttpClientLite; using HttpClientLite.Extensions; using HttpClientLite.Handlers.interfaces; using HttpClientLite.Configurations.interfaces; var httpManager = new HttpManager("https://api.example.com"); // 配置 HttpClient httpManager.HttpClientConfiguration(client => { client.DefaultRequestHeaders.Add("Authorization", "Bearer example-token"); }); // 配置 HttpRequestMessage httpManager.RequestMessageConfiguration(request => { request.Headers.Add("Custom-Header", "HeaderValue"); }); // 添加异常处理 httpManager.HttpManagerExceptionHandler((exception, response) => { Console.WriteLine($"Request failed: {exception.Message}"); }); // 发起请求 var response = await httpManager.GetAsync("/users"); string content = await response.Content.ReadAsStringAsync(); Console.WriteLine(content); ~~~ ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request