/// <summary> /// 采用httpwebrequest方式访问网络,根据传入的URl地址,得到响应的数据字符串。 /// </summary> /// <param name="objHttpItems">参数列表</param> /// <param name="cookie">自动维护的字符串cookie</param> /// <returns>HttpResults 为返回结果</returns> public HttpResults GetHtml(HttpItems objHttpItems, ref string cookie) { //调用专门读取数据的类 HttpResults res = GetHttpRequestData(objHttpItems); cookie = new XJHTTP().UpdateCookie(cookie, res.Cookie); res.Cookie = cookie; return(res); }
/// <summary> /// 【不推荐使用】 推荐使用字符串方式维护Cookie /// 将StringCookie 添加到 CookieContainer对象中 /// 当CookieContainer出现问题时请调用本方法修复 CookieContainer对象 /// 更新失败时,返回原来的CookieContainer对象 /// /// </summary> /// <param name="cookie_container">需要更新的cookie_container</param> /// <param name="cookie">字符串cookie</param> /// <param name="domain">domain默认为空</param> /// <returns></returns> public CookieContainer AddCookieToContainer(CookieContainer cookie_container, string cookie, string domain = "") { if (cookie_container == null) { cookie_container = new CookieContainer(); } Regex reg = new Regex("domain=(.*?);"); string rdomain = string.Empty; if (reg.IsMatch(cookie)) { rdomain = reg.Match(cookie).Groups[1].Value; } else { // 有指定域名就用指定的 if (domain.Length > 0) { rdomain = domain; }//匹配失败 如果cookie_container中的数据为0那么直接返回,本次更新失败 else if (cookie_container.Count > 0) { try { rdomain = new XJHTTP().GetAllCookie(cookie_container)[0].Domain; //得到原cookie_container中的domain. 如果失败,则返回原先对象 } catch { return(cookie_container); } } } string[] arrCookie = cookie.Split(';'); foreach (string sCookie in arrCookie) { string vsCookie = sCookie.Replace("HttpOnly,", "").Trim(); //剔除httponly if (vsCookie.Contains("expires")) //去除过滤时间 { continue; } if (vsCookie.Split(',').Length > 1) //去掉,分隔的cookie { vsCookie = vsCookie.Split(',')[1]; } try { if (!string.IsNullOrEmpty(vsCookie)) { Cookie ck = new Cookie { Name = vsCookie.Split(new Char[] { '=' }, 2)[0].Trim(), Value = vsCookie.Split(new Char[] { '=' }, 2)[1].Trim(), Domain = rdomain }; cookie_container.Add(ck); } } catch { continue; } } return(cookie_container); }