支持.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. mongodb,redis,mysql的区别和具体应用场景(转)

    一.MySQL 关系型数据库. 在不同的引擎上有不同 的存储方式. 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高. 开源数据库的份额在不断增加,mysql的份额页在持续增长. 缺点就 ...

  2. Spring Cloud组件和架构图

    Spring Cloud是微服务架构的集大成者,将一系列优秀的组件进行了整合. 服务网关:聚合内部服务,提供统一的对外API接口,屏蔽内部实现.可以解决跨域.认证和前端调用负责的问题,便于项目重构.可 ...

  3. npm run start失败&Node.js 查询指定端口运行情况及终止占用端口办法

    缘由: node.js项目中运行npm run start命令脚本报错,No such file or directory 最开始以为是命令脚本找不到所谓的执行路径,但后面发现不是,是package. ...

  4. Linux | 文本编辑器vim

    vim 编辑器介绍 vim 编辑器是一款非常棒的文本处理工具,它会默认安装在当前所有的 Linux 操作系统上面. vim 编辑器中设置了三种模式,可以极大的提高我们的工作效率: 命令模式:控制光标移 ...

  5. kong插件Prometheus+grafana图形化展示

    目录 1. 准备工作 3. 为kong添加 prometheus插件 4. 打开kong的metrics支持 4. 配置prometheus.yml添加kong提供的数据信息 5. 在 Grafana ...

  6. JS高阶函数的使用

    1.何为高阶函数呢? JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数.简单来说,就是对其他 ...

  7. NOIP模拟赛T3 斐波那契

    1.题目 求 \[\sum_{i=1}^n \sum_{j=1}^m \gcd(F_i,F_j) \] 其中 \(F_k\) 表示斐波那契数列的第 \(k\) 项,对 \(10^9 + 7\) 取模. ...

  8. ES6新增语法(四)——面向对象

    ES6中json的2个变化 简写:名字和值相同时,json可以可以简写 let a=12,b=5; let json = { a, b } console.log(json) // { a:12 , ...

  9. if函数+isna函数+vlookup函数实现不同列相同单元格内容排列在同一行

    1,首先学习的网址:https://jingyan.baidu.com/album/22a299b5dd0f959e19376a22.html?picindex=1 2,excel 这也许是史上最好最 ...

  10. sql-5-事务,索引

    事务 1.ACID概念 原子性(Atomicity) 要么都成功,要么都失败 一致性(consistency) 事务前后的数据完整性保持一致 持久性(Durability) 事务一旦提交则不可逆,持久 ...