tnblog
首页
视频
资源
登录

后台请求swagger-web api数据(含token标头的添加)

6023人阅读 2022/4/8 16:34 总访问:50765 评论:0 收藏:0 手机
分类: .NET

本文主要为了实现通过.NET代码请求swagger接口获取json字符串
然后解析拿到需要的数据
封装方法,GET及POST方法都兼容

  1.   /// <param name="url">接口地址</param>
  2.   /// <param name="token">标头</param>
  3.   /// <param name="Type">请求方式</param>
  4.   // token 看个人使用情况,一般get方法不需要设置token 但是设置了也不会影响查询结果
  5.   
  6.  public static string HttpApi(string url, string token = ""string Type = "GET"string body = null)
  7.         {
  8.             Encoding encoding = Encoding.UTF8;
  9.             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  10.             request.Method = Type;
  11.             request.Accept = "text/html, application/xhtml+xml, */*";
  12.             request.ContentType = "application/json";
  13.             if (token != "")
  14.             {
  15.                 request.Headers.Add("Authorization""Bearer " + token);
  16.             }
  17.             if (body != null)
  18.             {
  19.                 byte[] buffer = encoding.GetBytes(body);
  20.                 request.ContentLength = buffer.Length;
  21.                 request.GetRequestStream().Write(buffer, 0, buffer.Length);
  22.             }
  23.             HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  24.             using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
  25.             {
  26.                 return reader.ReadToEnd();
  27.             }
  28.         }

注意:如果接口是GET请求方式,方法里面是post会请求失败,所以需要 统一接口和方法的请求方式

  • 获取token

  1.  public static string HttpApiToken(string url, string body)
  2.         {
  3.             Encoding encoding = Encoding.UTF8;
  4.             HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  5.             request.Method = "POST";
  6.             request.Accept = "text/html, application/xhtml+xml, */*";
  7.             request.ContentType = "application/json";
  8.             byte[] buffer = encoding.GetBytes(body);
  9.             request.ContentLength = buffer.Length;
  10.             request.GetRequestStream().Write(buffer, 0, buffer.Length);
  11.             HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  12.             using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
  13.             {
  14.                 return reader.ReadToEnd();
  15.             }
  16.         }

像encoding以及accept这些参数配置出入不大,如果本文章的不兼容可以自行修改

  • 调用

  1. // 调用获取token的接口  ip地址,接口地址和后面的端口号自行修改及定义
  2.  string logingUrl = HttpApiToken($"http://{ip}:10140/.../.../.../...""{userName:\"admin\",password:\"111111\"}");
  3.             dynamic response = Newtonsoft.Json.JsonConvert.DeserializeObject(logingUrl);//对象转换
  4.             token = response.data.token;
  5.  //调用获取json接口 和获取token出入不大
  6.  //本文分别举例post和get两种不一样的请求方式
  7.  //post
  8.   string RYQYurl = $"http://{serverStr}:10140/api/Business/BaseArea/GetList";
  9.    string data = HttpApi(RYQYurl, token, "POST""{参数条件}");
  10.    dynamic AreaCategoryJSON = Newtonsoft.Json.JsonConvert.DeserializeObject(data);//对象转换
  11.     var AreaCategoryList = AreaCategoryJSON.data; //这个位置 点data和点什么看接口返回数据格式
  12.     
  13.     //可能单独存在data里面,也有可能是存在data里面的list里面,只需要多点一下list就可以了>。。。.data.list
  14.     //解析
  15.      foreach (var item in AreaCategoryList)
  16.       {
  17.       string name=item.name;
  18.       //string 自定义名称=item.接口返回数据名称
  19.       }
  20.       
  21.       
  22.  //GET
  23.   string PersonnelLocationUrl = $"http://{ip}:10140/api/Business/PersonnelLocation/GetPersonnelLocationList";
  24.                 string PersonnelLocationList = HttpApi(PersonnelLocationUrl, token, "GET");
  25.                 dynamic PersonnelLocationJSON = Newtonsoft.Json.JsonConvert.DeserializeObject(PersonnelLocationList);//对象转换
  26.                 //解析
  27.                 var PersonnelLocations = PersonnelLocationJSON.data;
  28.                 //遍历 和post一样

需要注意的是,get请求条件在路径里面  post请求在调用方法时给定的body值
ok 本章结束,谢谢观看

评价

可输入下拉文本框,据输入,动态加载数据 jquery-editable-select

用到一个jquery-editable-select的控件github地址:https://github.com/indrimuska/jquery-editable-select这个插件的原理是...

皓月有趣论题 - U盘或其他存储设备 存入数据后 质量是否发生改变

转自我的个人博客 http://blog.axibug.com之前、朋友提出“U盘或其他存储设备 存入数据后 质量是否发生改变”的问题。那么...

ServiceStack.Redis操作Redis设置数据过期问题

添加一个key并设置过期时间(例如这个设置2分10秒后过期)TimeSpants=newTimeSpan(0,2,10); byte[]intbit=BitConverter.GetB...

Java + 云数据

第四阶段:Java + 云数据第一部分:Linux版本1.Linux简介和安装2.Linux和Windows的区别3.Linux远程登录4.Linux常用命令5.Li...

判断table表格中checkbox 未选中的数据

判断table表格中checkbox 未选中的数据 var arrays = $(table).find(&quot;input[name=&#39;sel_sw&#39;]:not(:checked)&qu...

Oracle数据库中没有scott用户

使用SYS用户登录conn sys/密码 as sysdba(默认密码123456)然后找到oracle安装目录下scott.sql的这个文件然后执行命令:@+...

Vue.js+Layer实现表格数据绑定与更新

一:使用Vue.js绑定好数据与更新事件 使用v-on绑定好事件,在事件里边直接把该行数据传递进去,在更新方法里边就可以直接...

python数据集合区别

列表(list):可读写,值可以重复,有序排列,初始化语法:[&#39;tom&#39;,‘jerry’]元组(tuple):只读,值可以重复,...

MySQL控制台插入中文数据报错1366解决

计算机配置: windows系统.数据库:MySQL5.5.如图 : 下图为表结构信息:通过 show full columns from userinfo;查询所得 na...

数据读取器与指定的"xx"不兼容。某个类型为"xx"的成员在同名的数据读取器中没有对应的列

报错的地方var result= _db.Database.SqlQuery&lt;SMachine&gt;(sql).FirstOrDefault();经过分析,是因为SqlQuery方法查询...

HtmlAgilityPack 网页数据处理

HtmlAgilityPack网络数据处理新年新气象!祝大家新的一年里蓬勃发展,飞黄腾达,幸福健康!今天讲的是一款处理网络数据的框...

没有为 SQL 缓存通知启用数据

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql -S 数据库IP -U 登录名 -P 密码 -d 数据库名称 -t 表名 -et

ado.net访问数据库的基本用法

放回datatable//1:开打数据库的连接 using(SqlConnectionconn=newSqlConnection(&quot;server=.;uid=sa;pwd=123456;databa...

跨域请求数据

在网上找了一大片跨域请求的问题都没有解决必须要好生说一下问题:当在前台跨域请求的时候的发现控制台会报错,但访问是访...
与其用时间去get一个未知的以后,不如做好现在,set自己一个好的以后
排名
46
文章
10
粉丝
1
评论
0
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术