支持.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

http扩展小插件的更多相关文章

  1. 开源Unity小插件CheatConsole

    我们在开发游戏的过程中,通常都需要一些快捷的方式来进行一些非常规的测试,这些功能一般被称作控制台或者GM指令,比如虚幻竞技场中,可以使用~键呼出控制台,输入一些指令即可进行快捷设置,比如设置分辨率,全 ...

  2. WebSocket小插件

    一.WebSocket小介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信 ...

  3. 【Bootstrap】优秀小插件收集

    Bootstrap中不乏很多优秀的小插件来让界面更加漂亮.比如之前做过笔记的bootstrap-fileinput,select2,datetimepicker等都是属于这一系列的.这些相对而言比较大 ...

  4. 苹果电脑中怎么快速卸载Flash Player和浏览器扩展应用插件

    Adobe Flash Player是一款轻量级浏览器插件,帮助你在网页浏览过程中享受更广泛的多媒体体验.是一种拓展,与Java一样,成为安全和隐私问题的重要来源.这些都需要手动删除的Flash是令人 ...

  5. 浮动【电梯】或【回到顶部】小插件:iElevator.js

    iElevator.js 是一个jquery小插件,使用简单,兼容IE6,支持UMD和3种配置方式,比锚点更灵活. Default Options _defaults = { floors: null ...

  6. aBowman >>可以运用到自己博客上的小插件

    大家进入我的博客会发现页面右边有一只小狗这部分.这个就是我用在上面的 一个小插件.插件网址是:http://abowman.com/google-modules/,这上面有很多的小插件,可以直接运用到 ...

  7. thinkphp 行为扩展以及插件机制介绍

    首先行为扩展这个概念是TP架构的核心组成之一,关于行为的解释我就粗略的概括一下吧:TP在从接受到HTTP请求到最终将视图输出,期间经历的很多步骤,这些步骤大家可以在http://document.th ...

  8. 移动端全屏滑动的小插件,简单,轻便,好用,只有3k swiper,myswiper,page,stage

    https://github.com/donglegend/mySwiper mySwiper 移动端全屏滑动的小插件,简单,轻便,好用,只有3k 下载 直接下载 bower install mySw ...

  9. ThinkPHP3.2 行为扩展以及插件机制介绍!

    首先行为扩展这个概念是TP架构的核心组成之一,关于行为的解释我就粗略的概括一下吧:TP在从接受到HTTP请求到最终将视图输出,期间经历的很多步骤,这些步骤大家可以在http://document.th ...

随机推荐

  1. 各种学位&不同学段的表达

    1.学士 B.S.=Bachelor of Science 2.硕士 Master ​ MA.Sc(master of Science科学硕士) ​ MA.Eng(master of engineer ...

  2. python mqtt通信(windows)

      一.消息队列服务器 这里我用到activemq,可到官网下载 http://activemq.apache.org/ 1. 若遇到点击apache-activemq-5.16.2\bin\acti ...

  3. java02实验:方法

    一:素数输出 1.实验要求: (1)编写判断该数是否为素数的方法,并在主方法中对其进行调用. (2)注意编程规范:程序开头部分的目的,作者以及日期:必要的空格与缩进,适当的注释等: (3)实验报告中要 ...

  4. noip模拟23[联·赛·题]

    \(noip模拟23\;solutions\) 怎么说呢??这个考试考得是非常的惨烈,一共拿了70分,为啥呢 因为我第一题和第三题爆零了,然后第二题拿到了70分,还是贪心的分数 第一题和第二题我调了好 ...

  5. P2490 [SDOI2011]黑白棋

    P2490 [SDOI2011]黑白棋 题意 一个 \(1*n\) 的棋盘上,A 可以移动白色棋子,B 可以移动黑色的棋子,其中白色不能往左,黑色不能往右.他们每次操作可以移动 1 到 \(d\) 个 ...

  6. odoo里API解读

    Odoo自带的api装饰器主要有:model,multi,one,constrains,depends,onchange,returns 七个装饰器. multimulti则指self是多个记录的合集 ...

  7. 2020厦门大学综述翻译:3D点云深度学习(Remote Sensiong期刊)

    目录 摘要 1.引言: 2.点云深度学习的挑战 3.基于结构化网格的学习 3.1 基于体素 3.2 基于多视图 3.3 高维晶格 4.直接在点云上进行的深度学习 4.1 PointNet 4.2 局部 ...

  8. 创建一个计算器的函数calc含有两个数字,调用函数的函数传递一个函数,分别是实现加减乘除

    function calc(num){ var n1=8; var n2=2; num(n1,n2); } //加 functiong jia(a,b){ console.log( a+b ); } ...

  9. IOS真机调试找不到设备:ERROR: Could not connect to lockdownd, error code -[x]

    报错信息: Could not connect to lockdownd, error code -3 解决方法:修改var/db/lockdown文件夹的读写权限 在终端找到文件夹cd var/db ...

  10. MyBatis使用Zookeeper保存数据库的配置,可动态刷新

    核心关键点: 封装一个DataSource, 重写 getConnection 就可以实现 我们一步一步来看. 环境: Spring Cloud + MyBatis MyBatis常规方式下配置数据源 ...