private static void ScheduleGetAllRecentContestsJsonCallback(Object state) { try { HttpWebRequest request = HttpWebRequest.CreateHttp(ConfigurationManager.RecentContestURL); request.Timeout = REQUEST_TIMEOUT; request.BeginGetResponse(ar => { HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(ar); using (Stream stream = response.GetResponseStream()) { StreamReader sr = new StreamReader(stream); String content = RecentContestManager.ProcessRecentContestsJsonContent(sr.ReadToEnd()); if (!String.IsNullOrEmpty(content)) { RecentContestCache.SetRecentContestCache(content);//设置缓存 } } }, request); } catch (System.Exception) { ;//Do Nothing } }
private static async Task <String> GetAllRecentContestsJsonFromWebAsync() { HttpClient client = new HttpClient(); client.Timeout = TimeSpan.FromMilliseconds(REQUEST_TIMEOUT); String content = await client.GetStringAsync(ConfigurationManager.RecentContestURL); return(RecentContestManager.ProcessRecentContestsJsonContent(content)); }
private const Int32 REQUEST_TIMEOUT = 20000;//ms #endregion #region 用户方法 /// <summary> /// 根据比赛信息地址获取最近比赛信息 /// </summary> /// <param name="url">比赛信息地址</param> /// <returns>最近比赛信息</returns> public static async Task <String> GetAllRecentContestsJsonAsync() { String content = RecentContestCache.GetRecentContestCache();//获取缓存 if (String.IsNullOrEmpty(content)) { content = await RecentContestManager.GetAllRecentContestsJsonFromWebAsync(); RecentContestCache.SetRecentContestCache(content);//设置缓存 } return(content); }