• 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库还提供了许多其他功能,如上传文件、下载文件、设置超时时间等,可以根据实际需求选择使用。

     

  • 相关阅读:
    (三)构建网络模型
    django中的自定义分页器
    linux挖矿病毒kthreaddk横行,如何灭掉它?
    学习无人机代码框架【第一天】---VMware 安装Ubuntu16.04时显示不全的解决方法
    css动画基本使用
    Java开发者的神经网络进阶指南:深入探讨交叉熵损失函数
    GPTZero:论文打假神器
    .NET 6+Semantic Kernel快速接入OpenAI接口
    【超详细断点级别讲解 SpringSecurity】项目实战:用户认证、用户授权
    haskell 基本布局和组成元素
  • 原文地址:https://blog.csdn.net/weixin_57242877/article/details/134440925