Esempio n. 1
0
        /// <summary>
        ///     从服务器中获取数据。
        /// </summary>
        /// <param name="type">
        ///     要获取的数据的类型。
        /// </param>
        /// <param name="args">
        ///     一个参数数组,其中的内容用于替换格式符号。
        /// </param>
        public static async Task <JToken> GetDataAsync(DataUriType type, params object[] args)
        {
            bool   forceRefresh = false;
            string uri          = string.Format(GetUriStringTemplate(type), args);
            string json;

            if (forceRefresh || !responseCache.ContainsKey(uri))
            {
                json = await NetworkHelper.GetJson(uri);

                if (responseCache.ContainsKey(uri))
                {
                    responseCache[uri] = json;
                }
                else
                {
                    responseCache.Add(uri, json);
                }
            }
            else
            {
                json = responseCache[uri] as string;
            }
            var    o     = JObject.Parse(json);
            JToken token = null;

            if (!string.IsNullOrEmpty(json) &&
                !o.TryGetValue("data", out token) &&
                o.TryGetValue("message", out JToken value))
            {
                throw new CoolapkMessageException(value);
            }
            else
            {
                return(token);
            }
        }