• C#一个到多个Cookie的字符串添加到CookieCollection集合中【isGood代码】


    C#一个到多个Cookie的字符串添加到CookieCollection集合中
    多个站点(Domain)与多个路径(Path)与多个Cookie名(c.name)的字符要添加到CookieCollection集合中
    在网上找不到可行的方法,isGood用一天写出的添加到CookieCollection集合中多用代码:
    /// <summary>
    /// 一个到多个Cookie的字符串添加到CookieCollection集合中【isGood代码】
    /// </summary>
    /// <param name="s">Cookie的字符串</param>
    /// <param name="defaultDomain">站点主机部分</param>
    public static CookieCollection strCokAddCol(string s, string defaultDomain)
    {
        CookieCollection cc = new CookieCollection();
        if (string.IsNullOrEmpty(s) || s.Length < 5 || s.IndexOf("=") < 0) return cc;
        if (string.IsNullOrEmpty(defaultDomain) || defaultDomain.Length < 5) return cc;
        s.TrimEnd(new char[] { ';'}).Trim();
        Uri urI = new Uri(defaultDomain);
        defaultDomain = urI.Host.ToString();
        //用软件截取的cookie会带有expires,要把它替换掉【isGood代码】
    if (s.IndexOf("expires=") >= 0)
    {
        s = replace(s, @"expires=[\w\s,-:]*GMT[;]?", "");
    }
       //只有一个cookie直接添加【isGood代码】
    if (s.IndexOf(";") < 0)
    {
        System.Net.Cookie c = new System.Net.Cookie(s.Substring(0, s.IndexOf("=")), s.Substring(s.IndexOf("=") + 1));
        c.Domain = defaultDomain;
        cc.Add(c);
        return cc;
    }
        //不同站点与不同路径一般是以英文道号分别【isGood代码】
        if (s.IndexOf(",") > 0)
        {
            s.TrimEnd(new char[] { ',' }).Trim();
            foreach (string s2 in s.Split(','))
            {
                cc = strCokAddCol(s2, defaultDomain, cc);
            }
            return cc;
        }
        else //同站点与同路径,不同.Name与.Value【isGood代码】
        {
            return strCokAddCol(s, defaultDomain, cc);
        }
    }
    //添加到CookieCollection集合部分
    private static CookieCollection strCokAddCol(string s, string defaultDomain, CookieCollection cc)
    {
        try
        {
            s.TrimEnd(new char[] { ';' }).Trim();
            System.Collections.Hashtable hs = new System.Collections.Hashtable();
            foreach (string s2 in s.Split(';'))
            {
                string s3 = s2.Trim();
                if (s3.IndexOf("=") > 0)
                {
                    string[] s4 = s3.Split('=');
                    hs.Add(s4[0].Trim(), s4[1].Trim());
                }
            }
            string defaultPath = "/";
            foreach (object Key in hs.Keys)
            {
                if (Key.ToString().ToLower() == "path")
                {
                    defaultPath = hs[Key].ToString();
                }
                else if (Key.ToString().ToLower() == "domain")
                {
                    defaultDomain = hs[Key].ToString();
                }
            }
    //【isGood代码】
            foreach (object Key in hs.Keys)
            {
                if (!string.IsNullOrEmpty(Key.ToString()) && !string.IsNullOrEmpty(hs[Key].ToString()))
                {
                    if (Key.ToString().ToLower() != "path" && Key.ToString().ToLower() != "domain")
                    {
                        Cookie c = new Cookie();
                        c.Name = Key.ToString();
                        c.Value = hs[Key].ToString();
                        c.Path = defaultPath;
                        c.Domain = defaultDomain;
                        cc.Add(c);
                    }
                }
            }
        }
        catch {}
        return cc;
    }
     
    替换字符 
    /// <summary>
    /// 替换字符【isGood代码】
    /// </summary>
    /// <param name="strSource">来源</param>
    /// <param name="strRegex">表达式</param>
    /// <param name="strReplace">取代</param>
    public static string replace(string strSource, string strRegex, string strReplace)
    {
        try
        {
            Regex r;
            r = new Regex(strRegex, RegexOptions.IgnoreCase | RegexOptions.Singleline);
            string s = r.Replace(strSource, strReplace);
            return s;
        }
        catch
        {
            return strSource;
        }
    }
     【isGood代码】
    心中时常装有一盘人生的大棋,天作棋盘,星作棋子,在斗转星移中,只有不断地搏击人生,人生才有意义,生命才能彰显光辉,才能收获一分永恒。
  • 相关阅读:
    Ubuntu12.04安装svn1.8
    [NOIP模拟测试3] 建造游乐园 题解(欧拉图性质)
    图论模板
    [bzoj3073] Journeys 题解(线段树优化建图)
    [bzoj3033]太鼓达人 题解(搜索)
    [NOIP2016]天天爱跑步 题解(树上差分) (码长短跑的快)
    [HNOI2015]菜肴制作 题解(贪心+拓扑)
    [SDOI2015]排序 题解 (搜索)
    [CQOI2011]放棋子 题解(dp+组合数学)
    [ZJOI2011]看电影(组合数学/打表+高精)
  • 原文地址:https://www.cnblogs.com/top5/p/2267314.html
Copyright © 2020-2023  润新知