分类:
.NET
本文主要为了实现通过.NET代码请求swagger接口获取json字符串
然后解析拿到需要的数据
封装方法,GET及POST方法都兼容
/// <param name="url">接口地址</param>
/// <param name="token">标头</param>
/// <param name="Type">请求方式</param>
// token 看个人使用情况,一般get方法不需要设置token 但是设置了也不会影响查询结果
public static string HttpApi(string url, string token = "", string Type = "GET", string body = null)
{
Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = Type;
request.Accept = "text/html, application/xhtml+xml, */*";
request.ContentType = "application/json";
if (token != "")
{
request.Headers.Add("Authorization", "Bearer " + token);
}
if (body != null)
{
byte[] buffer = encoding.GetBytes(body);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
return reader.ReadToEnd();
}
}注意:如果接口是GET请求方式,方法里面是post会请求失败,所以需要 统一接口和方法的请求方式
获取token
public static string HttpApiToken(string url, string body)
{
Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.Accept = "text/html, application/xhtml+xml, */*";
request.ContentType = "application/json";
byte[] buffer = encoding.GetBytes(body);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
return reader.ReadToEnd();
}
}像encoding以及accept这些参数配置出入不大,如果本文章的不兼容可以自行修改
调用
// 调用获取token的接口 ip地址,接口地址和后面的端口号自行修改及定义
string logingUrl = HttpApiToken($"http://{ip}:10140/.../.../.../...", "{userName:\"admin\",password:\"111111\"}");
dynamic response = Newtonsoft.Json.JsonConvert.DeserializeObject(logingUrl);//对象转换
token = response.data.token;
//调用获取json接口 和获取token出入不大
//本文分别举例post和get两种不一样的请求方式
//post
string RYQYurl = $"http://{serverStr}:10140/api/Business/BaseArea/GetList";
string data = HttpApi(RYQYurl, token, "POST", "{参数条件}");
dynamic AreaCategoryJSON = Newtonsoft.Json.JsonConvert.DeserializeObject(data);//对象转换
var AreaCategoryList = AreaCategoryJSON.data; //这个位置 点data和点什么看接口返回数据格式
//可能单独存在data里面,也有可能是存在data里面的list里面,只需要多点一下list就可以了>。。。.data.list
//解析
foreach (var item in AreaCategoryList)
{
string name=item.name;
//string 自定义名称=item.接口返回数据名称
}
//GET
string PersonnelLocationUrl = $"http://{ip}:10140/api/Business/PersonnelLocation/GetPersonnelLocationList";
string PersonnelLocationList = HttpApi(PersonnelLocationUrl, token, "GET");
dynamic PersonnelLocationJSON = Newtonsoft.Json.JsonConvert.DeserializeObject(PersonnelLocationList);//对象转换
//解析
var PersonnelLocations = PersonnelLocationJSON.data;
//遍历 和post一样需要注意的是,get请求条件在路径里面 post请求在调用方法时给定的body值
ok 本章结束,谢谢观看
评价
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256
50010702506256
欢迎加群交流技术