/// <summary> /// 组装请求参数 /// </summary> /// <param name="openCaiApiArg"></param> /// <returns></returns> private static string GetRequsetArg(OpenCaiApiArg openCaiApiArg) { StringBuilder builder = new StringBuilder(); if (!string.IsNullOrEmpty(openCaiApiArg.token)) { builder.Append(string.Format("token={0}&", openCaiApiArg.token)); } if (!string.IsNullOrEmpty(openCaiApiArg.code)) { builder.Append(string.Format("code={0}&", openCaiApiArg.code)); } if (openCaiApiArg.rows > 0) { builder.Append(string.Format("rows={0}&", openCaiApiArg.rows)); } if (!string.IsNullOrEmpty(openCaiApiArg.format)) { builder.Append(string.Format("format={0}&", openCaiApiArg.format)); } if (!string.IsNullOrEmpty(openCaiApiArg.date)) { builder.Append(string.Format("date={0}&", openCaiApiArg.date)); } if (!string.IsNullOrEmpty(openCaiApiArg.callback)) { builder.Append(string.Format("callback={0}", openCaiApiArg.callback)); } return(StringHelper.DelLastChar(builder.ToString(), "&")); }
/// <summary> /// 从主站抓取开奖数据 昨天/今天 /// </summary> /// <param name="IsToday"></param> /// <returns></returns> private List <YunNanSSCEntity> GetDocByMainUrl(bool IsToday = true) { var list = new List <YunNanSSCEntity>(); try { var time = DateTime.Now; var arg = new OpenCaiApiArg { code = EnumHelper.GetLotteryCode(SCCLottery.YunNanSSC), date = time.ToString("yyyy-MM-dd") }; if (!IsToday) { arg.date = time.AddDays(-1).ToString("yyyy-MM-dd"); } var data = OpenCaiApiServices.GetOpenCaiApiData(arg); if (data == null) { return(list); } if (data.data != null) { if (data.data.Count == 0) { return(list); } for (var i = 0; i < data.data.Count; i++) { var qi = data.data[i].GetTermStr(); var qihao = qi.Length == 8 ? qi : qi.Remove(qi.Length - 3, 1); var tmp = new YunNanSSCEntity { Id = int.Parse(qihao), OpenCode = data.data[i].GetOpenCodeStr(), OpenTime = DateTime.Parse(data.data[i].opentime) }; list.Add(tmp); } var checkDataHelper = new CheckDataHelper(); var dbdata = services.GetListIn(currentLottery, IsToday) .ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr()); checkDataHelper.CheckData(dbdata, list.ToDictionary(w => w.Id.ToString(), w => w.OpenCode), Config.Area, currentLottery); } } catch (Exception ee) { log.Error(GetType(), string.Format("【{0}】通过站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ee.Message)); } return(list); }
/// <summary> /// 从备用站抓取开奖数据 昨天/今天 /// </summary> /// <param name="IsToday"></param> /// <returns></returns> /// <summary> /// 从主站抓取开奖数据 昨天/今天 /// </summary> /// <param name="IsToday"></param> /// <returns></returns> private List <GuangXiK3Entity> GetDocByMainUrl(bool IsToday = true) { var list = new List <GuangXiK3Entity>(); try { var time = DateTime.Now; var arg = new OpenCaiApiArg { code = EnumHelper.GetLotteryCode(SCCLottery.GuangXiK3), // rows = int.Parse(GetPeriodsNumberToDay(time, IsToday)), date = time.ToString("yyyy-MM-dd") }; if (!IsToday) { arg.date = time.AddDays(-1).ToString("yyyy-MM-dd"); } var data = OpenCaiApiServices.GetOpenCaiApiData(arg); if (data == null) { return(list); } if (data.data != null) { if (data.data.Count == 0) { return(list); } for (var i = 0; i < data.data.Count; i++) { var tmp = new GuangXiK3Entity { QiHao = data.data[i].GetTermStr(), KaiJiangHao = data.data[i].GetOpenCodeStr(), OpenTime = DateTime.Parse(data.data[i].opentime) }; list.Add(tmp); } var checkDataHelper = new CheckDataHelper(); var dbdata = services.GetListIn(currentLottery, IsToday) .ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr()); checkDataHelper.CheckData(dbdata, list.ToDictionary(w => w.QiHao.ToString(), w => w.KaiJiangHao), Config.Area, currentLottery); } } catch (Exception ee) { log.Error(GetType(), string.Format("【{0}】通过站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ee.Message)); } return(list); }
/// <summary> /// 获取接口数据 /// <para>备注:接口支持3种参数模式,分别如下:</para> /// <para>1、按最新查询,只需要传入code、rows(如有需要)参数即可</para> /// <para>2、按最新查询(批量),只需要传入code(多个用逗号隔开)、rows(如有需要)参数即可</para> /// <para>3、按开奖日期查询,只需要传入code、date参数即可</para> /// </summary> /// <param name="openCaiApiArg"></param> /// <param name="type"></param> /// <returns></returns> public static OpenCaiBaseJson GetOpenCaiApiData(OpenCaiApiArg openCaiApiArg, Type type = null) { OpenCaiBaseJson baseJson = new OpenCaiBaseJson(); lock (_lock) { try { //按开奖日期查询地址修正 string action = !string.IsNullOrEmpty(openCaiApiArg.date) ? "daily" : "newly"; //最终接口地址 string url = string.Format(ApiHost, GetRequsetArg(openCaiApiArg), action); //组装参数 HttpItem item = new HttpItem { Url = url, Method = "GET", ContentType = "application/json", Timeout = 90 * 1000, ReadWriteTimeout = 90 * 1000, Encoding = Encoding.UTF8 }; //开始请求 HttpResult result = helper.GetHtml(item); if (result.StatusCode == HttpStatusCode.OK) { string jsonStr = result.Html; if (!string.IsNullOrEmpty(jsonStr)) { if (jsonStr.IndexOf("请求频率过快", StringComparison.Ordinal) < 0) { baseJson = jsonStr.JsonToEntity <OpenCaiBaseJson>(); } else { log.Debug(type ?? typeof(OpenCaiApiServices), "调用了接口,请求参数:" + openCaiApiArg.TryToJson() + ",请求地址:" + url + "\r\n"); } } } else { log.Error(typeof(OpenCaiApiServices), "请求接口[" + url + "]失败,状态码:" + result.StatusCode); } } catch (Exception e) { log.Error(typeof(OpenCaiApiServices), e); } //finally //{ // log.Debug(type, "调用了接口,请求参数:" + openCaiApiArg.TryToJson() + "\r\n"); //} } return(baseJson); }
/// <summary> /// 从主站抓取开奖数据 昨天/今天 /// </summary> /// <param name="IsToday"></param> /// <returns></returns> private Dictionary <string, string> GetDocByMainUrl(bool IsToday = true) { var result = new Dictionary <string, string>(); try { var time = DateTime.Now; var arg = new OpenCaiApiArg { code = EnumHelper.GetLotteryCode(SCCLottery.ShanDongKLPK3), // rows = int.Parse(GetPeriodsNumberToDay(time, IsToday)), date = time.ToString("yyyy-MM-dd") }; if (!IsToday) { arg.date = time.AddDays(-1).ToString("yyyy-MM-dd"); } var data = OpenCaiApiServices.GetOpenCaiApiData(arg); if (data == null) { return(result); } if (data.data != null) { if (data.data.Count == 0) { return(result); } for (var i = 0; i < data.data.Count; i++) { var code = data.data[i].GetOpenCodeStr().Split(','); for (var j = 0; j < code.Length; j++) { code[j] = CetapiTOdb(int.Parse(code[j])).ToString(); } result.Add(data.data[i].GetTermStr(), string.Join(",", code)); } var checkDataHelper = new CheckDataHelper(); var dbdata = services.GetListIn(currentLottery, IsToday) .ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr()); checkDataHelper.CheckData(dbdata, result, Config.Area, currentLottery); } } catch (Exception ee) { log.Error(GetType(), string.Format("【{0}】通过站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ee.Message)); } return(result); }
/// <summary> /// 从主站抓取开奖数据 昨天/今天 /// </summary> /// <param name="IsToday"></param> /// <returns></returns> private Dictionary <string, string> GetDocByMainUrl(bool IsToday = true) { var result = new Dictionary <string, string>(); try { var time = DateTime.Now; var arg = new OpenCaiApiArg { code = EnumHelper.GetLotteryCode(SCCLottery.LiaoNingKL12), date = time.ToString("yyyy-MM-dd") }; if (!IsToday) { arg.date = time.AddDays(-1).ToString("yyyy-MM-dd"); } var data = OpenCaiApiServices.GetOpenCaiApiData(arg); if (data == null) { return(result); } if (data.data != null) { if (data.data.Count == 0) { return(result); } for (var i = 0; i < data.data.Count; i++) { var qi = data.data[i].GetTermStr(); var qihao = qi; result.Add(qihao, data.data[i].GetOpenCodeStr()); } var checkDataHelper = new CheckDataHelper(); var dbdata = services.GetListIn(currentLottery, IsToday) .ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr()); checkDataHelper.CheckData(dbdata, result, Config.Area, currentLottery); // CheckData(dbdata, result); } } catch (Exception ee) { log.Error(GetType(), string.Format("【{0}】通过站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ee.Message)); } return(result); }
/// <summary> /// 从主要链接查询开奖号码 昨天/今天 /// </summary> /// <param name="IsToday"></param> /// <returns></returns> private List <OpenCode21Model> GetDocByMainUrl(bool IsToday = true) { var list = new List <OpenCode21Model>(); try { var time = DateTime.Now; var arg = new OpenCaiApiArg { code = EnumHelper.GetLotteryCode(SCCLottery.BeiJingKL8), date = time.ToString("yyyy-MM-dd") }; if (!IsToday) { arg.date = time.AddDays(-1).ToString("yyyy-MM-dd"); } var data = OpenCaiApiServices.GetOpenCaiApiData(arg); if (data == null) { return(list); } if (data.data != null) { if (data.data.Count == 0) { return(list); } for (var i = 0; i < data.data.Count; i++) { var tmp = new OpenCode21Model(); var codeAry = data.data[i].GetOpenCodeStr().Split(','); if (codeAry.Length == 21) { tmp.Term = long.Parse(data.data[i].expect); tmp.OpenTime = DateTime.Parse(data.data[i].opentime); tmp.OpenCode1 = int.Parse(codeAry[0]); tmp.OpenCode2 = int.Parse(codeAry[1]); tmp.OpenCode3 = int.Parse(codeAry[2]); tmp.OpenCode4 = int.Parse(codeAry[3]); tmp.OpenCode5 = int.Parse(codeAry[4]); tmp.OpenCode6 = int.Parse(codeAry[5]); tmp.OpenCode7 = int.Parse(codeAry[6]); tmp.OpenCode8 = int.Parse(codeAry[7]); tmp.OpenCode9 = int.Parse(codeAry[8]); tmp.OpenCode10 = int.Parse(codeAry[9]); tmp.OpenCode11 = int.Parse(codeAry[10]); tmp.OpenCode12 = int.Parse(codeAry[11]); tmp.OpenCode13 = int.Parse(codeAry[12]); tmp.OpenCode14 = int.Parse(codeAry[13]); tmp.OpenCode15 = int.Parse(codeAry[14]); tmp.OpenCode16 = int.Parse(codeAry[15]); tmp.OpenCode17 = int.Parse(codeAry[16]); tmp.OpenCode18 = int.Parse(codeAry[17]); tmp.OpenCode19 = int.Parse(codeAry[18]); tmp.OpenCode20 = int.Parse(codeAry[19]); tmp.OpenCode21 = int.Parse(codeAry[20]); } list.Add(tmp); } var checkDataHelper = new CheckDataHelper(); var dbdata = services.GetListIn(currentLottery, IsToday); if (dbdata == null) { return(list); } var DATA = dbdata.ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr()); checkDataHelper.CheckData(DATA, list.ToDictionary(w => w.Term.ToString(), w => w.GetCodeStr()), Config.Area, currentLottery); } } catch (Exception ee) { log.Error(GetType(), string.Format("【{0}】通过主要站点抓取开奖列表时发生错误,错误信息【{1}】", Config.Area + currentLottery, ee.Message)); } return(list); }