Exemplo n.º 1
0
        public void Start()
        {
            lock (lockStart)
            {
                if (thread != null)
                {
                    return;
                }
                enabled = true;
            }

            thread = new System.Threading.Thread(
                () =>
            {
                while (enabled)
                {
                    try
                    {
                        ConfigModel config            = ConfigManager.GetConfig(this.appId);
                        ApiTicketModel apiTicketModel = SendHandler.GetApiTicket(config.AccessToken);
                        apiTicketModel.appId          = appId;

                        /**
                         * 为了重用,将ApiTicket对象以事件的形式广播出去。
                         * 在这里,保存好ApiTicket,以供项目在其他地方使用。
                         * 你可以保存到数据库中,也可以保存到全局变量中。
                         */

                        if (this.ApiTicketEvent != null)
                        {
                            try
                            {
                                this.ApiTicketEvent(apiTicketModel);
                            }
                            catch (Exception ex)
                            { }
                        }

                        if (apiTicketModel.errcode != 0)
                        {
                            System.Threading.Thread.Sleep(millisecondsErrorContinue);    //如果出现异常,X秒后重新请求.

                            continue;
                        }
                    }
                    catch (Exception e)
                    {
                        System.Threading.Thread.Sleep(millisecondsErrorContinue);    //如果出现异常,X秒后重新请求.

                        continue;
                    }
                    finally
                    {
                    }

                    System.Threading.Thread.Sleep(millisecondsTimeout);
                }
            });
            thread.Start();
        }
Exemplo n.º 2
0
        /// <summary>
        /// 获取ApiTicket
        /// 卡券 api_ticket 是用于调用卡券相关接口的临时票据,有效期为 7200 秒,通过 access_token 来获取。
        /// 这里要注意与 jsapi_ticket 区分开来。由于获取卡券 api_ticket 的 api 调用次数非常有限,
        /// 频繁刷新卡券 api_ticket 会导致 api 调用受限,影响自身业务,开发者必须在自己的服务全局缓存卡券 api_ticket 。
        /// </summary>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        public static ApiTicketModel GetApiTicket(string accessToken)
        {
            string url = ApiUrl.GetApiTicketUrl(accessToken);

            String json = HttpHelper.ScrapeWebPage(url);

            JObject jo = JObject.Parse(json);

            ApiTicketModel model = jo.ToObject <ApiTicketModel>();

            return(model);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 获取ApiTicket
        /// 卡券 api_ticket 是用于调用卡券相关接口的临时票据,有效期为 7200 秒,通过 access_token 来获取。
        /// 这里要注意与 jsapi_ticket 区分开来。由于获取卡券 api_ticket 的 api 调用次数非常有限,
        /// 频繁刷新卡券 api_ticket 会导致 api 调用受限,影响自身业务,开发者必须在自己的服务全局缓存卡券 api_ticket 。
        /// </summary>
        /// <param name="config"></param>
        /// <returns></returns>
        public static ApiTicketModel GetApiTicket(ConfigModel config)
        {
            ApiTicketModel model = GetApiTicket(config.AccessToken);

            return(model);
        }