/// <summary> /// 获取Web授权地址 /// </summary> /// <returns></returns> public static string GetAuthUrl(string callback) { string url = Stands.AUTH_HOST + "/Authorize/Index"; //回调地址 string callBackUrl = WebUtils.CurrentHost() + "/" + Stands.CallBackController + "/CallBack/?" + Stands.BEFORE_REQUEST_URL + "=" + HttpUtility.UrlEncode(callback); CJClient client = new CJClient(); CJDictionary dic = new CJDictionary { { "projectCode", Stands.PROJECT_CODE }, { "auth_type", (int)Stands.AuthType } }; DateTime timestamp = DateTime.Now; return client.BuildAuthUrl(url, "", Stands.SIGN_SECRET, callBackUrl, dic, timestamp); }
/// <summary> /// url 权限路由 /// </summary> /// <param name="callBack"></param> /// <param name="userInfo">用户信息</param> /// <param name="dic">其他信息 该信息会通过Url返回到分站的callback</param> /// <returns></returns> public static AuthMessage RouteUrl(string callBack, SSOUser userInfo, CJDictionary dic) { CJClient _client = new CJClient(); return RouteUrl(callBack, _client, userInfo, dic); }
/// <summary> /// url 权限路由 /// </summary> /// <param name="callBack"></param> /// <param name="_biz">数据请求对象</param> /// <param name="_client">url编辑对象</param> /// <param name="userInfo">用户信息</param> /// <param name="dic">其他信息</param> /// <returns></returns> public static AuthMessage RouteUrl(string callBack, CJClient _client, SSOUser userInfo, CJDictionary dic) { try { userInfo.Password = null; dic = dic ?? new CJDictionary(); //尝试从cookie中拿openid var openId = Tools.GetCookie(Stands.OpenIdCookie); //生成主站令牌 ps:如果有openid 使用openid作为令牌,如果没有openid 使用id var token = string.IsNullOrEmpty(openId) ? Guid.NewGuid().ToString().ToUpper() : openId; dic[CJClient.TOKEN] = token; var list = CacheHelper.Item_Get<List<Filters>>(Stands.FILTERS); //存储用户信息 SaveLoginInfo(userInfo, token); try { string configMsg; if (list != null && list.Any(x => x.FlagValue == userInfo.FlagValue)) { var redirect = list.First(x => x.FlagValue == userInfo.FlagValue); callBack = redirect.Url; configMsg = redirect.Message; } else { callBack = _client.BuildReturnUrl(callBack, dic); configMsg = "登录成功!"; } return new AuthMessage { Message = configMsg, Url = callBack, Status = userInfo.FlagValue }; } catch (Exception ex) { _log.Error(ex.Message); throw new Exception("请检查xml文件:" + ex.Message); } } catch (Exception ex) { _log.Error(ex.Message); return new AuthMessage { IsError = true, Message = ex.Message }; } }
public static void Start() { //读取默认的页数 using (var httpClient = new HttpClient()) { string url = "https://www.tooopen.com/img"; HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(HtmlCode(url)); var root = doc.DocumentNode; //var catelist = root.SelectNodes("//ul[@class='c-fix']//li//a"); var catelist = root.SelectNodes("//div[@class='c-fix list-com']//div//a"); if (catelist != null && catelist.Count != 0) { int i = 0; int sort = 0; foreach (var item in catelist) { i++; sort++; HtmlDocument docu = new HtmlDocument(); docu.LoadHtml(item.OuterHtml); var nod = docu.DocumentNode; HtmlData.copyNeedDb.Enqueue(new Model.ImgForSCGS { UrlCat = sort.ToString(), //UrlCat= rot.SelectSingleNode("//ul[@class='c-fix']//li//a").InnerText, ImgSrc = nod.SelectSingleNode("//img")?.Attributes["src"]?.Value, Sort = sort, ImgDes = nod.SelectSingleNode("//img")?.Attributes["alt"]?.Value }); //string src = item.Attributes["href"].Value; //if (src.Contains("_")) { // HtmlDocument docs = new HtmlDocument(); // docs.LoadHtml(HtmlCode(src)); // var rot = docs.DocumentNode; // var itemlist = rot.SelectNodes("//a[@class='pic']"); // if (itemlist != null && itemlist.Count != 0) { // foreach (var it in itemlist) { // sort++; // HtmlDocument docu = new HtmlDocument(); // docu.LoadHtml(it.OuterHtml); // var nod = docu.DocumentNode; // HtmlData.copyNeedDb.Enqueue(new Model.ImgForSCGS { // UrlCat= rot.SelectSingleNode("//ul[@class='c-fix']//li//a").InnerText, // ImgSrc = nod.SelectSingleNode("//img")?.Attributes["src"]?.Value, // Sort =sort, // ImgDes= nod.SelectSingleNode("//img")?.Attributes["alt"]?.Value // }); // } // } //} else { // continue; //} } } } //每一个小时产生一次请求 newTimer = new Timer(o => { logger.Trace($"开始,图片采集"); if (requestQuery.Count == 0) { Page = 100; for (int i = 1; i < Page; i++) { requestQuery.Enqueue(new PageRequestObj(FromDes, 1, 1) { Page = i }); } createEvent.Set(); } else { logger.Error($"上一次的采集未完成"); } }, null, 1000, dueTime); { Thread t = new Thread(() => { createEvent.WaitOne(); while (true) { s: if (DataDownCount > 30) { Thread.Sleep(1000); goto s; } if (requestQuery.TryDequeue(out PageRequestObj obj)) { Interlocked.Increment(ref DataDownCount); var dic = new Dictionary <string, string>(); dic.Add("page", obj.Page.ToString()); CJClient.NOCookieClient.PostAsync($"https://www.tooopen.com/img", CJClient.Content(dic)).ContinueWith((x, y) => { if (x.Status == TaskStatus.RanToCompletion && x.Result.StatusCode == System.Net.HttpStatusCode.OK) { x.Result.Content.ReadAsStringAsync().ContinueWith((xx, yy) => { var jsonResult = xx.Result; //判断是否请求成功,是否有数据 if (xx.Status == TaskStatus.RanToCompletion) { var jarray = JArray.Parse(jsonResult); if (jarray.Count > 0) { try { foreach (var item in jarray) { HtmlData.copyNeedDb.Enqueue(new Model.ImgForSCGS { UrlCat = item["UrlCat"]?.Value <string>(), ImgSrc = item["ImgSrc"]?.Value <string>(), Sort = item["Sort"].Value <int>(), ImgDes = item["ImgDes"]?.Value <string>() }); } } catch (Exception ex) { ErrorUtils.ErrorException(ex, "素材公社图片采集,数据解析失败:\r\n" + Newtonsoft.Json.JsonConvert.SerializeObject(yy), logger); } finally { Interlocked.Decrement(ref DataDownCount); } } else { logger.Trace("素材公社图片采集,最后一页:" + Newtonsoft.Json.JsonConvert.SerializeObject(yy)); } } else { Interlocked.Decrement(ref DataDownCount); logger.Trace("素材公社图片采集,请求完成,数据解析,xx.Status:", xx.Status); ErrorUtils.ErrorException(xx.Exception, "素材公社图片采集,请求完成,数据解析:\r\n" + Newtonsoft.Json.JsonConvert.SerializeObject(yy), logger); } }, y); } }, dic); } else { Thread.Sleep(500 * 1000); } } }); t.IsBackground = true; t.Start(); } }