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
http扩展小插件的更多相关文章
- 开源Unity小插件CheatConsole
我们在开发游戏的过程中,通常都需要一些快捷的方式来进行一些非常规的测试,这些功能一般被称作控制台或者GM指令,比如虚幻竞技场中,可以使用~键呼出控制台,输入一些指令即可进行快捷设置,比如设置分辨率,全 ...
- WebSocket小插件
一.WebSocket小介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了.近年来,随着HTML5的诞生,WebSocket协议被提出,它实现了浏览器与服务器的全双工通信 ...
- 【Bootstrap】优秀小插件收集
Bootstrap中不乏很多优秀的小插件来让界面更加漂亮.比如之前做过笔记的bootstrap-fileinput,select2,datetimepicker等都是属于这一系列的.这些相对而言比较大 ...
- 苹果电脑中怎么快速卸载Flash Player和浏览器扩展应用插件
Adobe Flash Player是一款轻量级浏览器插件,帮助你在网页浏览过程中享受更广泛的多媒体体验.是一种拓展,与Java一样,成为安全和隐私问题的重要来源.这些都需要手动删除的Flash是令人 ...
- 浮动【电梯】或【回到顶部】小插件:iElevator.js
iElevator.js 是一个jquery小插件,使用简单,兼容IE6,支持UMD和3种配置方式,比锚点更灵活. Default Options _defaults = { floors: null ...
- aBowman >>可以运用到自己博客上的小插件
大家进入我的博客会发现页面右边有一只小狗这部分.这个就是我用在上面的 一个小插件.插件网址是:http://abowman.com/google-modules/,这上面有很多的小插件,可以直接运用到 ...
- thinkphp 行为扩展以及插件机制介绍
首先行为扩展这个概念是TP架构的核心组成之一,关于行为的解释我就粗略的概括一下吧:TP在从接受到HTTP请求到最终将视图输出,期间经历的很多步骤,这些步骤大家可以在http://document.th ...
- 移动端全屏滑动的小插件,简单,轻便,好用,只有3k swiper,myswiper,page,stage
https://github.com/donglegend/mySwiper mySwiper 移动端全屏滑动的小插件,简单,轻便,好用,只有3k 下载 直接下载 bower install mySw ...
- ThinkPHP3.2 行为扩展以及插件机制介绍!
首先行为扩展这个概念是TP架构的核心组成之一,关于行为的解释我就粗略的概括一下吧:TP在从接受到HTTP请求到最终将视图输出,期间经历的很多步骤,这些步骤大家可以在http://document.th ...
随机推荐
- ftp错误&&详解方案
一.FTP错误代码列表150 文件状态良好,打开数据连接 200 命令成功 202 命令未实现 211 系统状态或系统帮助响应 212 目录状态 213 文件状态 214 帮助信息,信息仅对人类用户有 ...
- java基础---类和对象(3)
一.Object类 java.lang.Object类是Java语言中类层次结构的根类,也就是说任何一个类都是该类的直接或者间接子类 如果定义一个Java类时没有使用extends关键字声明其父类,则 ...
- 没事就要多做多练,Shell脚本循环例题做一做
Shell脚本循环例题 一.示例1 二.示例2 三.示例3 四.示例4 ...
- C语言:随机抽奖
#include <stdio.h> #include <stdlib.h> //<stdlib.h>用于调用 rand(), #include <time. ...
- 团队开发day03
完成安卓的登录和注册界面的设计,进行服务器端的开发,设计javabean实体 映射,零售商 ,商品,品牌商,订单类的构建 遇到问题:安卓发起网络请求,客户端回应请求,数据处理设置. 使用传统的方法 / ...
- 关于高校表白App的NABCD项目分析
N(Need,需求) 首先,针对本校男多女少 的具体情况,为广大本校大学生提供一个更加宽广的平台: 其次,针对当前各高校均有校园表白墙的实际情况,各表白墙难以整合在一起,使得信息不够集中的现状,我们小 ...
- nacos集群部署
对于nacos的集群部署,建议大家参考nacos官网进行,地址:https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html 下面是我自己部署na ...
- java网络编程基础——TCP网络编程二
1.半关闭的Socket 前面的服务器和客户端通信时总是以行为最小数据单位,但是在某些协议里,通信的数据单位可能是多行的,当出现多行数据时就 出现一个问题:Socket输出流如何表示输出数据已经结束. ...
- 前端开发入门到进阶第三集【sublime 的package control ——install package报错】
参考:https://www.cnblogs.com/ae6623/p/5338049.html,解决2帮我解决问题. 解决Sublime包管理package control 报错 There are ...
- Python+Requests+Re(正则)爬取某糗事百科图片(数据分析一)
1.博客目前在学习爬虫课程,使用正则表达式来爬取网页的图片信息 2.下面我们一起来回归下Python中的正则使用方式/方法 3.糗事百科图片爬取源码如下: import requestsimport ...