<返回更多

HttpClient使用

2021-12-28    Wednes
加入收藏

以京训钉开发平台接口文档为例,使用HttpClient类请求调用其接口,对数据进行增删改查等操作。
文档地址:
https://www.yuque.com/bjjnts/jxd/bo1osz

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Web.Caching;

namespace JxdService
{
    public class JxdService
    {
        private static HttpClient httpClient;

        static JxdService()
        {
            httpClient = new HttpClient();
            httpClient.BaseAddress = new Uri("https://openapi.bjjnts.cn");
            //httpClient.DefaultRequestHeaders.Add("Authorization", "xxxxxxxx");
        }

        public static object _tokenLocker = new object();
        public static Token Token
        {
            get
            {
                lock (_tokenLocker)
                {
                    var cache = new Cache();
                    var token = cache.Get("jxd_token") as Token;
                    if (token == null)
                    {
                        token = GetToken();
                        cache.Insert("jxd_token", token, null, DateTime.Now.AddSeconds(token.expires_in - 10 * 60), Cache.NoSlidingExpiration);
                    }
                    return token;
                }
            }
        }

        /// <summary>
        /// 获取Token
        /// </summary>
        /// <returns></returns>
        public static Token GetToken()
        {
            HttpContent content = new StringContent("{"App_key":"YGnTIDznnAdS9bYf", "app_secret":"lxFboer5sxUlpFTDpHLdLU8mlkWabLYy"}", Encoding.UTF8, "application/json");

            var httpResponse = httpClient.PostAsync("/token", content).Result;
            var result = "";
            if (httpResponse.StatusCode == System.Net.HttpStatusCode.OK)
            {
                result = httpResponse.Content.ReadAsStringAsync().Result;
            }

            if (string.IsNullOrWhiteSpace(result))
            {
                return null;
            }
            var token = JsonHelper.Deserializer<Token>(result);
            return token;
        }

        /// <summary>
        /// 清除Token
        /// </summary>
        private static void ClearToken()
        {
            var cache = new Cache();
            cache.Remove("jxd_token");
        }


        /// <summary>
        /// 获取课程资源
        /// </summary>
        /// <returns></returns>
        public static List<CourseInfo> GetCoruses(CourseInfo where)
        {
            var token = Token;
            httpClient.DefaultRequestHeaders.Remove("Authorization");
            httpClient.DefaultRequestHeaders.Add("Authorization", $"{token.token_type} {token.access_token}");

            var httpResponse = httpClient.GetAsync("/courses?title=" + where.title).Result;

            //校验Token是否有效
            if (httpResponse.StatusCode == System.Net.HttpStatusCode.Unauthorized)
            {
                ClearToken();
                return GetCoruses(where);
            }

            var result = "";
            if (httpResponse.StatusCode == System.Net.HttpStatusCode.OK)
            {
                result = httpResponse.Content.ReadAsStringAsync().Result;
            }

            if (string.IsNullOrWhiteSpace(result))
            {
                return null;
            }
            return JsonHelper.Deserializer<List<CourseInfo>>(result);
        }

       

        /// <summary>
        /// 获取课程资源
        /// </summary>
        /// <returns></returns>
        public static CourseInfo GetCoruse(int id)
        {
            var token = Token;
            httpClient.DefaultRequestHeaders.Remove("Authorization");
            httpClient.DefaultRequestHeaders.Add("Authorization", $"{token.token_type} {token.access_token}");

            var httpResponse = httpClient.GetAsync($"/courses/{id}").Result;
            //校验Token是否有效
            if (httpResponse.StatusCode == System.Net.HttpStatusCode.Unauthorized)
            {
                ClearToken();
                return GetCoruse(id);
            }

            var result = "";
            if (httpResponse.StatusCode == System.Net.HttpStatusCode.OK)
            {
                result = httpResponse.Content.ReadAsStringAsync().Result;
            }

            if (string.IsNullOrWhiteSpace(result))
            {
                return null;
            }
            return JsonHelper.Deserializer<CourseInfo>(result);
        }

        /// <summary>
        /// 添加课程资源
        /// </summary>
        /// <returns></returns>
        public static CourseInfo AddCoruse(CourseVm course)
        {
            var token = Token;
            httpClient.DefaultRequestHeaders.Remove("Authorization");
            httpClient.DefaultRequestHeaders.Add("Authorization", $"{token.token_type} {token.access_token}");

            var data = JsonHelper.SerializeObject(new { course.title, course.image, course.job_id, course.copyright_id, course.content, course.cost_price });

            var httpResponse = httpClient.PostAsync("/courses", new StringContent(data, Encoding.UTF8, "application/json")).Result;
            //校验Token是否有效
            if (httpResponse.StatusCode == System.Net.HttpStatusCode.Unauthorized)
            {
                ClearToken();
                return AddCoruse(course);
            }

            var result = "";
            if (httpResponse.StatusCode == System.Net.HttpStatusCode.Created)
            {
                result = httpResponse.Content.ReadAsStringAsync().Result;
            }

            if (string.IsNullOrWhiteSpace(result))
            {
                return null;
            }
            return JsonHelper.Deserializer<CourseInfo>(result);
        }

        /// <summary>
        /// 修改课程
        /// </summary>
        /// <returns></returns>
        public static CourseInfo EidtCoruse(CourseVm course)
        {
            var token = Token;
            httpClient.DefaultRequestHeaders.Remove("Authorization");
            httpClient.DefaultRequestHeaders.Add("Authorization", $"{token.token_type} {token.access_token}");

            var data = JsonHelper.SerializeObject(new { course.title, course.image, course.job_id, course.copyright_id, course.content, course.cost_price });

            var httpResponse = httpClient.PutAsync($"/courses/{course.id}", new StringContent(data, Encoding.UTF8, "application/json")).Result;
            //校验Token是否有效
            if (httpResponse.StatusCode == System.Net.HttpStatusCode.Unauthorized)
            {
                ClearToken();
                return EidtCoruse(course);
            }

            var result = "";
            if (httpResponse.StatusCode == System.Net.HttpStatusCode.OK)
            {
                result = httpResponse.Content.ReadAsStringAsync().Result;
            }

            if (string.IsNullOrWhiteSpace(result))
            {
                return null;
            }
            return JsonHelper.Deserializer<CourseInfo>(result);
        }

        /// <summary>
        /// 删除课程
        /// </summary>
        /// <returns></returns>
        public static bool DelCoruse(int courseId)
        {
            var token = Token;
            httpClient.DefaultRequestHeaders.Remove("Authorization");
            httpClient.DefaultRequestHeaders.Add("Authorization", $"{token.token_type} {token.access_token}");

            var httpResponse = httpClient.DeleteAsync($"/courses/{courseId}").Result;
            //校验Token是否有效
            if (httpResponse.StatusCode == System.Net.HttpStatusCode.Unauthorized)
            {
                ClearToken();
                return DelCoruse(courseId);
            }

            return httpResponse.StatusCode == System.Net.HttpStatusCode.NoContent;
        }
    }
}
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>