//post请求方式1
public async Task<string> GetResponse(Dictionary<string, string> parameters, string requestUri, string token)
{
using HttpClient httpClient = new();
//添加请求头
if (!string.IsNullOrWhiteSpace(token))
{
httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
}
//拼接地址
if (parameters != null)
{
var strParam = string.Join("&", parameters.Select(o => o.Key + "=" + o.Value));
requestUri = string.Concat(requestUri, '?', strParam);
}
httpClient.BaseAddress = new Uri(requestUri);
//client.DefaultRequestHeaders.Add("Content-Type", "application/json; charset=utf-8");
return httpClient.GetStringAsync(requestUri).Result;
}
/// <summary>
/// post请求方式2
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="url"></param>
/// <param name="postData"></param>
/// <param name="token"></param>
/// <returns></returns>
public static T PostResponse<T>(string url, string postData, string token = "") where T : class, new()
{
T result = default;
HttpContent httpContent = new StringContent(postData);
httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
httpContent.Headers.ContentType.CharSet = "utf-8";
using HttpClient httpClient = new();
if (!string.IsNullOrWhiteSpace(token))
{
//httpContent.Headers.Add("Authorization", $"Bearer {token}");
httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
}
HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;
if (response.IsSuccessStatusCode)
{
Task<string> t = response.Content.ReadAsStringAsync();
string s = t.Result;
string json = JsonConvert.DeserializeObject(s).ToString();
result = JsonConvert.DeserializeObject<T>(json);
}
return result;
}
/// <summary>
/// Get请求方法
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="url"></param>
/// <param name="postData"></param>
/// <param name="token"></param>
/// <returns></returns>
public static T GetResponse<T>(string url, string token = "", string postData = "")
{
T result = default;
HttpContent httpContent = new StringContent(postData);
httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
httpContent.Headers.ContentType.CharSet = "utf-8";
using HttpClient httpClient = new();
if (!string.IsNullOrWhiteSpace(token))
{
//httpContent.Headers.Add("Authorization", $"Bearer {token}");
httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token);
}
HttpResponseMessage response = httpClient.GetAsync(url).Result;
if (response.IsSuccessStatusCode)
{
Task<string> t = response.Content.ReadAsStringAsync();
string s = t.Result;
string json = JsonConvert.DeserializeObject(s).ToString();
result = JsonConvert.DeserializeObject<T>(json);
}
return result;
}
-----------------------post调用方式---------------------------
/// <summary>
/// 请求
/// </summary>
/// <returns></returns>
public ValueTuple<bool,string,string,string, string> GetSanShuiVideoByVIdAndChannel(int vehicleID, int channel)
{
string url = "";//视频URL
string channelName = "";//通道名称
string iCarVersionName = ""; //平台名称
bool isSuccess = false;//判断是否请求成功
string msg = "";//返回信息
var reqUrl = "";
var postData = new { vehicleID = vehicleID, channel = channel };
string json = JsonConvert.SerializeObject(postData);
SanShuiVideoModel resModel = HARequestHelper.PostResponse<SanShuiVideoModel>(reqUrl, json, GetSanShuiToekn());
if (resModel != null)
{
isSuccess = resModel.isSuccess;
msg = resModel.msg;
url = resModel.obj?.data?.rtvUrl;
channelName = resModel.obj?.data?.channelName;
iCarVersionName = resModel.obj?.data?.iCarVersionName;
}
return ValueTuple.Create(isSuccess, url, channelName, iCarVersionName, msg);
}
-----------------------get调用方式---------------------------
/// <summary>
/// get
/// </summary>
/// <returns></returns>
public string GetSanShuiImgURLWay(string imgURL)
{
string fullImageURL = "";
string url = "";
var token = GetSanShuiToekn();
SanShuiImageModel resModel = HARequestHelper.GetResponse<SanShuiImageModel>(url, token);
if (resModel != null)
{
fullImageURL = resModel.obj;
}
return fullImageURL;
}
-------------------------解析返回的json数据格式---------------------------
{
"obj": {
"data": {
"rtvUrl": "url",
"streamType": 1,
"channel": 2,
"channelName": "通道2",
"status": 1,
"iCarVersionCode": 4,
"iCarVersionName": 平台,
"device": "设备号"
}
},
"error": "",
"msg": "数据加载成功",
"isSuccess": true,
"url": ""
}
-----------------------C#模型---------------------
/// <summary>
/// 模型1
/// </summary>
public class SanShuiVideoModel
{
public SanShuiVideoSecondModel obj { get; set; }
public bool isSuccess { get; set; }
public string msg { get; set; }
}
/// <summary>
/// 模型2
/// </summary>
public class SanShuiVideoSecondModel
{
public SanShuiVideoThirdModel data { get; set; }
}
/// <summary>
/// 模型3
/// </summary>
public class SanShuiVideoThirdModel
{
/// <summary>
/// 视频URL
/// </summary>
public string rtvUrl { get; set; }
/// <summary>
/// 通道名称
/// </summary>
public string channelName { get; set; }
/// <summary>
/// 平台名称
/// </summary>
public string iCarVersionName { get; set; }
}
netcore post、get请求以及增加token方式
于 2023-05-18 16:29:34 首次发布