.net HTTP请求类封装

简介: `HttpRequestHelper` 是一个用于简化 HTTP 请求的辅助类,支持发送 GET 和 POST 请求。它使用 `HttpClient` 发起请求,并通过 `Newtonsoft.Json` 处理 JSON 数据。示例展示了如何使用该类发送请求并处理响应。注意事项包括:简单的错误处理、需安装 `Newtonsoft.Json` 依赖,以及建议重用 `HttpClient` 实例以优化性能。

HttpRequestHelper

using System;
using System.IO;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json; // 需要安装 Newtonsoft.Json NuGet 包

public class HttpRequestHelper
{
    private readonly HttpClient _httpClient;
    private readonly string _baseUrl;

    public HttpRequestHelper(string baseUrl)
    {
        _httpClient = new HttpClient();
        _baseUrl = baseUrl;
    }

    public async Task<T> GetAsync<T>(string endpoint)
    {
        try
        {
            var url = $"{_baseUrl}{endpoint}";
            var response = await _httpClient.GetAsync(url);
            response.EnsureSuccessStatusCode();
            var content = await response.Content.ReadAsStringAsync();
            return JsonConvert.DeserializeObject<T>(content);
        }
        catch (HttpRequestException ex)
        {
            Console.WriteLine($"Request error: {ex.Message}");
            throw;
        }
    }

    public async Task<T> PostAsync<T, TRequestBody>(string endpoint, TRequestBody body)
    {
        try
        {
            var url = $"{_baseUrl}{endpoint}";
            var content = new StringContent(JsonConvert.SerializeObject(body), Encoding.UTF8, "application/json");
            var response = await _httpClient.PostAsync(url, content);
            response.EnsureSuccessStatusCode();
            var responseContent = await response.Content.ReadAsStringAsync();
            return JsonConvert.DeserializeObject<T>(responseContent);
        }
        catch (HttpRequestException ex)
        {
            Console.WriteLine($"Request error: {ex.Message}");
            throw;
        }
    }
}

以下是如何使用 HttpRequestHelper 类来发送 GET 和 POST 请求的示例

using System;
using System.Threading.Tasks;

public class Example
{
    public static async Task Main(string[] args)
    {
        var helper = new HttpRequestHelper("https://api.example.com");

        // 发送 GET 请求
        var getResponse = await helper.GetAsync<GetResponse>("endpoint/get");
        Console.WriteLine($"GET response: {JsonConvert.SerializeObject(getResponse, Formatting.Indented)}");

        // 发送 POST 请求
        var postRequestBody = new PostRequestBody
        {
            Property1 = "Value1",
            Property2 = 123
        };
        var postResponse = await helper.PostAsync<PostResponse, PostRequestBody>("endpoint/post", postRequestBody);
        Console.WriteLine($"POST response: {JsonConvert.SerializeObject(postResponse, Formatting.Indented)}");
    }

    public class GetResponse
    {
        // 根据你的 API 响应定义属性
        public string Property1 { get; set; }
        public int Property2 { get; set; }
    }

    public class PostRequestBody
    {
        // 根据你的 API 请求体定义属性
        public string Property1 { get; set; }
        public int Property2 { get; set; }
    }

    public class PostResponse
    {
        // 根据你的 API 响应定义属性
        public string Message { get; set; }
        public bool Success { get; set; }
    }
}

注意事项

  1. 错误处理:示例中的错误处理相对简单,仅输出错误信息并抛出异常。在实际应用中,你可能需要更复杂的错误处理逻辑。
  2. 依赖项:示例使用了 Newtonsoft.Json 库来序列化和反序列化 JSON。你需要通过 NuGet 包管理器安装 Newtonsoft.Json
  3. HttpClient 生命周期HttpClient 是一个资源密集型对象,建议重用 HttpClient 实例而不是每次请求都创建一个新的实例。
目录
相关文章
|
3天前
|
API 数据安全/隐私保护
Haskell中的HTTP请求:代理与响应状态检查
Haskell中的HTTP请求:代理与响应状态检查
|
1月前
|
缓存 应用服务中间件 Apache
HTTP 范围Range请求
HTTP范围请求是一种强大的技术,允许客户端请求资源的部分内容,提高了传输效率和用户体验。通过正确配置服务器和实现范围请求,可以在视频流、断点续传下载等场景中发挥重要作用。希望本文提供的详细介绍和示例代码能帮助您更好地理解和应用这一技术。
89 19
|
2月前
|
JSON 安全 API
.net 自定义日志类
在.NET中,创建自定义日志类有助于更好地管理日志信息。示例展示了如何创建、配置和使用日志记录功能,包括写入日志文件、设置日志级别、格式化消息等。注意事项涵盖时间戳、日志级别、JSON序列化、线程安全、日志格式、文件处理及示例使用。请根据需求调整代码。
51 13
|
2月前
|
存储 NoSQL MongoDB
.NET MongoDB数据仓储和工作单元模式封装
.NET MongoDB数据仓储和工作单元模式封装
59 15
|
2月前
|
JSON JavaScript 前端开发
什么是HTTP POST请求?初学者指南与示范
HTTP POST请求是一种常用的HTTP方法,主要用于向服务器发送数据。通过合理设置请求头和请求主体,可以实现数据的可靠传输。无论是在客户端使用JavaScript,还是在服务器端使用Node.js,理解和掌握POST请求的工作原理和应用场景,对于Web开发至关重要。
348 18
|
2月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
|
5月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
67 7
|
5月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
113 0
|
6月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
83 0
|
6月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
100 0

热门文章

最新文章