zoukankan      html  css  js  c++  java
  • http扩展小插件

    支持.net framework4.5.1,.net core2.0及以上

         应用层需要引用包Kogel.Net,Nuget上可以下载安装。

    或者使用Nuget命令添加包

    Install-Package Kogel.Net

     

    (一)注册

    如果是.netcore直接可以在启动类中(Startup.cs)中注册

    //注册HttpClient
    services.AddKogelHttpClient();

    其他环境直接

    //请求操作
    IHttpClient httpClient = new HttpClient();
    
    //文件访问操作
    IFileClient fileClient = new FileClient();

    (二)使用

    get请求

    var responseText = httpClient.Get("https://www.baidu.com/");
    Console.WriteLine(responseText);

    post请求

    var response = httpClient.Post("https://localhost:44370/api/basic/cost_info/get_list", new { cost_code = "837" }, accessToken);
    //response.StatusCode//状态码
    Console.WriteLine(response.Result);

    指定类型返回

    var resultResponse = httpClient.Post<ResultResponse<PageList<GetCostInfoListReponse>>>("https://localhost:44370/api/basic/cost_info/get_list", new { cost_code = "837" }, accessToken);
                Console.WriteLine(JsonConvert.SerializeObject(resultResponse));

    自定义请求

    //参数
    var jsonData = JsonConvert.SerializeObject(new { cost_code = "837" });
    var byteArr = Encoding.UTF8.GetBytes(jsonData);
    
    //请求头
    WebHeaderCollection header = new WebHeaderCollection();
    header.Add("Authorization", $"Bearer {accessToken}");
    
    //开始请求
    var response = httpClient.Request(new KogelRequest
    {
                    Method = "post",
                    Url = "https://localhost:44370/api/basic/cost_info/get_list",
                    ContentType = "application/json",
                    PostDataType = PostDataType.Byte,
                    PostDataByte = byteArr,
                    Header = header
    });
    Console.WriteLine(response.Result);

    以上方法都支持异步 

    (三)文件操作

    通过IFileClient操作,和IHttpClient同理

    文件下载

    string path = $"{Directory.GetCurrentDirectory()}\abc.png";
    fileClient.Download("https://localhost:44370/files/abc.png", path);

    文件上传

    string path = $"{Directory.GetCurrentDirectory()}\abc.png";
    var resultResponse = fileClient.Upload("https://localhost:44370/api/file/uplpad?suffix=png", path, accessToken);
                Console.WriteLine(JsonConvert.SerializeObject(resultResponse));

    (四)使用Aop查看执行的请求

    可以监控请求执行的前后,并且只会作用于当前上下文

    //aop监听请求(只会作用于当前上下文)
    //执行前
    HttpBase.Aop.OnExecuting += (KogelRequest request) =>
    {
                    //请求的url
                    var url = request.Url;
                    //请求的参数
                    var param = request.PostDataByte;
                    //其他HttpWebRequest参数基本都有
    };
    
    //执行后
    HttpBase.Aop.OnExecuted += (KogelRequest request) =>
    {
                    //请求的url
                    var url = request.Url;
                    //请求的参数
                    var param = request.PostDataByte;
                    //其他HttpWebRequest参数基本都有
    };

    示例

    https://github.com/a935368322/Kogel.Net/blob/master/Kogel.Net.Test/Command/HttpClientCommand.cs

    框架开源,完整框架源码可以去Github上下载:

    https://github.com/a935368322/Kogel.Net

    如有问题也可以加QQ群讨论:

    技术群 710217654

  • 相关阅读:
    The Node.js Event Loop, Timers, and process.nextTick()
    Main event loop
    Why should I avoid blocking the Event Loop and the Worker Pool?
    HTML Standard系列:Event loop、requestIdleCallback 和 requestAnimationFrame
    在这个示例中,使用 watch 选项允许我们执行异步操作 (访问一个 API),限制我们执行该操作的频率,并在我们得到最终结果前,设置中间状态。这些都是计算属性无法做到的。
    多线程 主线程
    mvvm
    跨库事务
    nginx 死循环
    nginx proxy pass redirects ignore port
  • 原文地址:https://www.cnblogs.com/kogel/p/15190974.html
Copyright © 2011-2022 走看看