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