当前位置: 首页 > article >正文

.net core 请求外部接口;ABP HttpClientFactory的使用

一. 首先最简单也是最重要的一部: 注入IHttpClientFactory

需要添加相关包 Volo.Abp.Http.Clent

但是引用显示的是: 
using System.Net.Http; 

但但是引用还是要引用的: Volo.Abp.Http.Clent

注入:

二. 正文

 var client = HttpClientFactory.CreateClient("Login");

该"Login" 为标识: 这是为了性能,所以要定义一个唯一编号,如果编号一样它会用一个线程去请求,如果碰到新的变量会重新开一个线程去执行,这样就两个线程,性能是不是高很多.

如果需要加头部信息:

client.DefaultRequestHeaders.Add("ContentType", "application/json;charset=UTF-8");var AccessToken = "eyJhbGciOiJSUzI1NiIsImtpZCI6IkM2QTVBMjg5NkQzNzcyRDUwMUVGNDk1Nzc1NEExRjIzIiwidHlwIjoiYXQrand0In0.eyJuYmYiOjE2Mzg1MTgxMTUsImV4cCI6MTY3MDA1NDExNSwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NDQzNDQiLCJhdWQiOiJDbG91ZFBsYXRmb3JtIiwiY2xpZW50X2lkIjoiQ2xvdWRQbGF0Zm9ybV9BcHAiLCJzdWIiOiIzOWZmZDE5My03NTljLTZhNTYtMjRkZC1lNzQ5ODM1ZmQxNTkiLCJhdXRoX3RpbWUiOjE2Mzg1MTgxMTQsImlkcCI6ImxvY2FsIiwibmFtZSI6IjEzNTM5Mzg1MzE0IiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjoiRmFsc2UiLCJlbWFpbCI6IjEzNTM5Mzg1MzE0QGRlZmF1bHQuaW8iLCJlbWFpbF92ZXJpZmllZCI6IkZhbHNlIiwiaWF0IjoxNjM4NTE4MTE1LCJzY29wZSI6WyJhZGRyZXNzIiwiQ2xvdWRQbGF0Zm9ybSIsImVtYWlsIiwib3BlbmlkIiwicGhvbmUiLCJwcm9maWxlIiwicm9sZSIsIm9mZmxpbmVfYWNjZXNzIl0sImFtciI6WyJwd2QiXX0.VqV_sO90EN8ctxwPwMgS9ohs3FTfTASnrq8T5-RVSGlSmEgU3gAlPUJJ0YZqYQ9TXLaxwSC394kW2yydDm6NJymhfu5PxU03G4bqP9EgbpXb5qeR25xaRg27CObZKYAZhdlv0vXaWETgIpkAzMfREfAode4XD-9lDfIzjHTrMRwJ2Dq0Rvy_t73Ab1Y7e1ss4YTUgegOP15ic3Fei2VhOG3U-ld1CzQGcYuYLjjNQ0-9me_ATnNGy1b1wwdwZRFyZJOqrHKFg"// 头部加Token
client.DefaultRequestHeaders.Add("authorization", "Bearer " + AccessToken);

头部加Token

1) Get请求:

 //1. 无body 参数
var result = await client.GetAsync("https://localhost:44344/api/getList?keyword=666&name=777");//2. 有 body 参数
var user = new {userName = "110",password = "123456"};var body = JsonConvert.SerializeObject(user);var input= new StringContent(content: body,encoding: Encoding.UTF8,mediaType: "application/json");var result = await client.GetAsync("https://localhost:44344/api/getList?keyword=666&name=777", input);

2) Post请求, Put请求; Send请求 都跟上面一样的方式传参和加Body:

 var user = new {userName = "110",password = "123456"};var body = JsonConvert.SerializeObject(user);var input= new StringContent(content: body,encoding: Encoding.UTF8,mediaType: "application/json");var result = await client.PostAsync("https://localhost:44344/api/create", input);

3) 需要对拿到结果进行解析成Json:


var resultJson = await result.Content.ReadAsStringAsync();

4) 根据实际返回的数据可以选择要不要再转成类, 方法如下:

引入 Newtonsoft.Json  NuGet包


var resultDto = JsonConvert.DeserializeObject<ResultDto>(resultJson);

然后就得到你想要的类, 就可实现你后面的操作.

http://www.lryc.cn/news/2417912.html

相关文章:

  • vuex结合mixin在实际项目中的使用(超详细)
  • 前端缓存详解
  • 学习记录333@MySQL问题之server name is already exists解决方案
  • kernel panic 分析解决方法
  • 基于Java游戏论坛平台设计和实现(源码+LW+调试文档+讲解等)
  • Picasa生成图片幻灯片页面图文教程
  • Java集合详解(超详细)
  • 什么是CSharp
  • c语言常量详细解释及简单应用
  • 入门MySQL--0基础,操作详图,简单易懂
  • CDB(ContainerDatabase)与PDB(PluggableDatabase)
  • 【EVPN】EVPN名词简介
  • java环境变量详解_JAVA环境变量配置详解
  • php中file_get_contents如何读取大容量文件
  • 为什么下载的.msi安装文件打不开、运行不了?用mysql的.msi安装文件为例
  • 学习使用Python执行P4操作
  • 8Uftp连接服务器错误
  • 自学电脑编程_有哪些高质量的自学网站
  • javaSE(完整版)
  • 精进不休丨MogDB 数据库预读特性进一步提升20%+查询性能
  • 计算机期刊投稿须知
  • C语言qsort函数的使用详解
  • 2023最新个人博客文章发布系统的设计与实现(毕业设计+论文+开题报告+运行)
  • Android 游戏开发入门指南(一)
  • java Map遍历的5种方法和一些基本使用
  • Cocoa 框架概述
  • alternatives命令总结
  • PS(Photoshop)去水印的4个方法
  • MPEG音频文件格式(包括MP3文件格式)详解
  • 思科RIP路由协议介绍与实验操作步骤