public string GetJsApiTicket(Dictionary <string, string> dic)
        {
            try
            {
                string           response = _httpHelper.Get(dic, Constants.GET_JSAPI_TICKET);
                JsApiTicketModel model    = Newtonsoft.Json.JsonConvert.DeserializeObject <JsApiTicketModel>(response);

                if (model != null)
                {
                    if (model.errcode == 0)
                    {
                        return(model.ticket);
                    }
                    else
                    {
                        return(model.errmsg);
                    }
                }
            }
            catch (Exception ex)
            {
                throw;
            }
            return(string.Empty);
        }
Exemple #2
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);
                        JsApiTicketModel jsApiTicketModel = SendHandler.GetJsApiTicket(config.AccessToken);
                        jsApiTicketModel.appId            = appId;

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

                        if (this.JsApiTicketEvent != null)
                        {
                            try
                            {
                                this.JsApiTicketEvent(jsApiTicketModel);
                            }
                            catch (Exception ex)
                            { }
                        }

                        if (jsApiTicketModel.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();
        }
Exemple #3
0
        /// <summary>
        /// 获取JsApiTicket
        /// jsapi_ticket是公众号用于调用微信JS接口的临时票据。
        /// 正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。
        /// 由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。
        /// </summary>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        public static JsApiTicketModel GetJsApiTicket(string accessToken)
        {
            string url = ApiUrl.GetJsApiTicketUrl(accessToken);

            String json = HttpHelper.ScrapeWebPage(url);

            JObject jo = JObject.Parse(json);

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

            return(model);
        }
Exemple #4
0
        /* https://oapi.dingtalk.com/get_jsapi_ticket?access_token=79721ed2fc46317197e27d9bedec0425
         *
         * errmsg    "ok"
         * ticket    "KJWkoWOZ0BMYaQzWFDF5AUclJOHgO6WvzmNNJTswpAMPh3S2Z98PaaJkRzkjsmT5HaYFfNkMdg8lFkvxSy9X01"
         * expires_in    7200
         * errcode    0
         */
        public static string GetJsApiTicket(string accessToken)
        {
            string url = string.Format("https://oapi.dingtalk.com/get_jsapi_ticket?access_token={0}", accessToken);

            try
            {
                string           response = HttpRequestHelper.Get(url);
                JsApiTicketModel model    = JsonConvert.DeserializeObject <JsApiTicketModel>(response);

                if (model != null)
                {
                    if (model.errcode == 0)
                    {
                        return(model.ticket);
                    }
                }
            }
            catch (Exception ex)
            {
                throw;
            }
            return(string.Empty);
        }
Exemple #5
0
        /// <summary>
        /// 获取JsApiTicket
        /// jsapi_ticket是公众号用于调用微信JS接口的临时票据。
        /// 正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。
        /// 由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。
        /// </summary>
        /// <param name="config"></param>
        /// <returns></returns>
        public static JsApiTicketModel GetJsApiTicket(ConfigModel config)
        {
            JsApiTicketModel model = GetJsApiTicket(config.AccessToken);

            return(model);
        }