• NET中使用Flurl高效处理Http请求


    在.NET中使用Flurl库可以非常高效地处理Http请求,以下是使用Flurl的一些基本用法:

    一、客户端 

    1. 引入Flurl库:在项目中引入Flurl库,可以通过NuGet包管理器来安装Flurl库。
    2. 创建FlurlClient对象:使用FlurlClient类来发送Http请求。可以通过以下方式创建FlurlClient对象:
    var client = new FlurlClient();
    • 发送Http请求:FlurlClient类提供了一系列的方法来发送Http请求,如GetAsync、PostAsync、PutAsync等。以下是一个发送GET请求的示例:
    • 处理返回结果:FlurlClient的异步方法通常返回一个HttpResponseMessage对象,可以通过该对象来获取请求的返回结果。以下是一个处理返回结果的示例:
    1. var result = await client.Request("http://localhost:5271/Home/Test1").GetAsync();
    2. int statusCode = result.StatusCode;
    3. Console.WriteLine("请求返回结果状态码:"+statusCode);
    4. var responseMessage = result.ResponseMessage;
    5. if (responseMessage.IsSuccessStatusCode)
    6. {
    7. var content = await responseMessage.Content.ReadAsStringAsync();
    8. Console.WriteLine(content);
    9. }
    10. else
    11. {
    12. Console.WriteLine("请求失败:" + result.StatusCode);
    13. }
    • 添加查询参数:可以使用Flurl库提供的Flurl.Url类来构建带有查询参数的Url。以下是一个添加查询参数的示例:
    1. static async Task Method2()
    2. {
    3. var url = "http://localhost:5271/Home/Test2".SetQueryParams(new { x = 8});
    4. var result = await client.Request(url).GetAsync();
    5. int statusCode = result.StatusCode;
    6. Console.WriteLine("请求返回结果状态码:" + statusCode);
    7. var responseMessage = result.ResponseMessage;
    8. if (responseMessage.IsSuccessStatusCode)
    9. {
    10. var content = await responseMessage.Content.ReadAsStringAsync();
    11. Console.WriteLine(content);
    12. }
    13. else
    14. {
    15. Console.WriteLine("请求失败:" + result.StatusCode);
    16. }
    17. }
    • 添加请求头:可以使用FlurlClient的WithHeader方法来添加请求头。以下是一个添加请求头的示例:
    1. static async Task Method3()
    2. {
    3. var result = await client.Request("http://localhost:5271/Home/Test3")
    4. .WithHeader("Name", "Token0000")
    5. .GetAsync();
    6. int statusCode = result.StatusCode;
    7. Console.WriteLine("请求返回结果状态码:" + statusCode);
    8. var responseMessage = result.ResponseMessage;
    9. if (responseMessage.IsSuccessStatusCode)
    10. {
    11. var content = await responseMessage.Content.ReadAsStringAsync();
    12. Console.WriteLine(content);
    13. }
    14. else
    15. {
    16. Console.WriteLine("请求失败:" + result.StatusCode);
    17. }
    18. }
    • 序列化请求体(还没尝试):可以使用Flurl库提供的Flurl.HttpContent类来序列化请求体。以下是一个使用Json序列化请求体的示例:
    1. var content = new { name = "John", age = 30 };
    2. var result = await client.Request("http://api.example.com")
    3. .PostJsonAsync(content);
    • 反序列化返回结果(还没尝试):可以使用Flurl.Library来反序列化返回结果。以下是一个使用Json反序列化返回结果的示例:
    1. var response = await client.Request("http://api.example.com")
    2. .GetJsonAsync();

     二、服务端接口

    1. public class HomeController : Controller
    2. {
    3. public IActionResult Index()
    4. {
    5. return View();
    6. }
    7. public string Test1()
    8. {
    9. return "你好啊000000000";
    10. }
    11. public int Test2(int x)
    12. {
    13. return x*x;
    14. }
    15. public string Test3()
    16. {
    17. var stringValues = Request.Headers["Name"].ToString();
    18. if (stringValues == "Token0000")
    19. {
    20. return "服务端获取的Token值:"+stringValues;
    21. }
    22. return null;
    23. }
    24. }

    使用Flurl库可以大大简化在.NET中处理Http请求的代码,提高开发效率。Flurl库还提供了许多其他功能,如上传文件、下载文件、设置超时时间等,可以根据实际需求选择使用。

     

  • 相关阅读:
    【深度学习】基于卷积神经网络(tensorflow)的人脸识别项目(四)
    Moonbeam Ignite强势回归
    ES6 --》函数扩展以及箭头函数讲解
    React基础知识点
    PLL与DLL的区别
    代码随想录算法训练营Day25|leetcode216 组合总和III,leetcode17 电话号码的字母组合
    【正点原子STM32连载】 第四十三章 SPI实验 摘自【正点原子】APM32F407最小系统板使用指南
    JumpServer2023漏洞复现合集
    A145-FR04HS-60变量柱塞泵控制比例放大器
    为什么说数字化工厂解决方案是制造企业的未来
  • 原文地址:https://blog.csdn.net/weixin_57242877/article/details/134440925