netcore post、get请求以及增加token方式

        //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; }
    }










  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在ApiPost中,请求参数可以通过Header参数、Query参数和Body参数进行配置。\[2\]在Header参数中,可以设置或导入Header参数,包括cookie的设置。在Query参数中,可以构造URL参数,同时也支持RESTful的PATH参数。在Body参数中,可以选择form-data、x-www-form-urlencoded或raw三种类型,分别对应提交表单参数、提交带文件的表单参数以及发送JSON对象或其他对象。\[2\]如果需要在每个接口的请求中都带上相同的参数,可以使用全局参数管理器,在全局header中填写相应的参数,这样每次发送接口请求时,该参数会自动带上。\[3\]全局query和全局body的使用方法与全局header类似。\[3\] #### 引用[.reference_title] - *1* [.NetCore WebApi Post请求参数的传递和获取](https://blog.csdn.net/liangmengbk/article/details/121666756)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [ApiPost](https://blog.csdn.net/weixin_43372749/article/details/123217414)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值