通过API接口获取数据至后台

前言:这是我第一次写CSDN,如果有什么不对的地方麻烦指导一下

正题:不知道各位在项目中有没有遇到项目联动情况,比如其他项目的会员,可能在这边也需要使用,如果有,那么这篇文章可能对你有用

因为数据量可能存在比较多的情况,我这边定义的API接口就是带分页的,使用的MVC的开发,所以数据拿到后台在进行封装。

我这边的AccessToken设置了失效时间,失效时间和AppSecret和AccessToken以及AppID都存在数据库,所以,你们可以为了维护可以存在数据库,做一个管理页面进行维护。

废话不多说,直接上代码块

        public PagedList<ShopMemberModel> ShopMumber(int pagesize, int pageindex, string keyword, DateTime? startDate, DateTime? endDate, Config_Auth auth)
        {

            using (var client = new WebClient())
            {
                //获取远端accessToken
                var accessToken = "";
                var pagelist = new PagedList<ShopMemberModel>();
                var list = new List<ShopMemberModel>();
                #region 先获取API的一些需要的密钥等等
                if (auth.ExpireDate == null || auth.ExpireDate < DateTime.Now)
                {
                    client.Encoding = Encoding.UTF8;

                    string serviceAddress = AppConfig.httpS2b2C + "/home/get?&AppSecret=" + auth.AppSecret + "&AppKey=" + auth.AppID;
                    var data = client.DownloadString(serviceAddress);
                    var obj = JsonConvert.DeserializeObject<JObject>(data);

                    if (obj["Status"].ToString() != "200")
                    {
                        pagelist.IndexNumber = -1;
                        pagelist.Data = list;
                        return pagelist;
                    }
                    accessToken = obj["Data"]["result"]["accessToken"].ToString();
                    auth.AccessToken = accessToken;
                    auth.RequestDate = DateTime.Parse(obj["Data"]["result"]["CreateTime"].ToString());
                    var exdate = auth.RequestDate?.AddDays(5).AddHours(-1);
                    auth.ExpireDate = exdate;
                    _config_AuthService.UpdateAccessToken(auth);
                }
                accessToken = auth.AccessToken;
                #endregion
                //把URL拼装好
                string service = AppConfig.httpS2b2C + "/User/User_List?accessToken=" + accessToken + "&AppKey=" + auth.AppID;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(service);
                //请求方式设置
                request.Method = "POST";
                request.ContentType = "application/json";
                //string strContent = string.Format(@"{""userTel"":""{0}"",""size"": ""{1}"",""page"": ""{2}""}",tel,size,page);
                string strContent = @"{ ""size"" : " + '"' + pagesize + '"' + ',' + '"' + "page" + '"' + ": " + '"' + pageindex + '"' + "," + '"' + "keyWord" + '"' + ": " + '"' + keyword + '"' + ',' + '"' + "registerStartDate" + '"' + ": " + '"' + startDate + '"' + "," + '"' + "registerEndDate" + '"' + ": " + '"' + endDate + '"' + "}";
                using (StreamWriter dataStream = new StreamWriter(request.GetRequestStream()))
                {
                    dataStream.Write(strContent);
                    dataStream.Close();
                }
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                string encoding = response.ContentEncoding;
                if (encoding == null || encoding.Length < 1)
                {
                    encoding = "UTF-8"; //默认编码  
                }
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));
                string retString = reader.ReadToEnd();
                //解析josn
                JObject jo = JObject.Parse(retString);

                if (jo["Status"].ToString() != "200")
                {
                    pagelist.Data = list;
                    return pagelist;
                }
                //数据获取到本地类
                var membermodel = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<MemberModel>(jo.ToString());
                list = membermodel.Data.result.Items;
                pagelist.PageIndex = membermodel.Data.result.page;
                pagelist.PageSize = membermodel.Data.result.size;
                pagelist.PageCount = membermodel.Data.result.PageCount;
                pagelist.RowCount = membermodel.Data.result.TotalItemCount;
                pagelist.PageCount = membermodel.Data.result.TotalCount;
                pagelist.Data = list;

                pagelist.IndexNumber = ((pagelist.PageIndex - 1) * pagelist.PageSize) + 1;
                return pagelist;
            }
        }

因为有部分的类是我自己建的,所以,字段也给各位看一下,以便参考

    public class Config_Auth : BaseEntity
    {
        public int ID { get; set; }
        public string AppID { get; set; }
        public string AppSecret { get; set; }
        public string AccessToken { get; set; }
        public DateTime? RequestDate { get; set; }
        public DateTime? ExpireDate { get; set; }
    }

返回类型

    public class PagedList<T>
    {
        /// <summary>
        /// 序号
        /// </summary>
        public int IndexNumber { get; set; }

        /// <summary>
        /// 页码
        /// </summary>
        public int PageIndex { get; set; }

        /// <summary>
        /// 页容量
        /// </summary>
        public int PageSize { get; set; }

        /// <summary>
        /// 总行数
        /// </summary>
        public int RowCount { get; set; }

        /// <summary>
        /// 总页数
        /// </summary>
        public int PageCount { get; set; }

        /// <summary>
        /// 分页数据
        /// </summary>
        public IList<T> Data { get; set; }
    }

返回类型的泛型

    public class MemberModel
    {
        public int Status { get; set; }
        public int usetime { get; set; }
        public string Message { get; set; }
        public ShopMemberData Data { get; set; }
    }
    public class ShopMemberData
    {
        public ShopMemberresult result { get; set; }
    }
    public class ShopMemberresult
    {
        public int page { get; set; }
        public int size { get; set; }
        public int PageCount { get; set; }
        public int TotalItemCount { get; set; }
        public int TotalCount { get; set; }
        public List<ShopMemberModel> Items { get; set; }
    }
    public class ShopMemberModel
    {
        public int Id { get; set; }
        public string UserName { get; set; }
        public string UserAvatar { get; set; }
        public string UserTel { get; set; }

    }

如果有不懂的可以私信小编

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值