zoukankan      html  css  js  c++  java
  • 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代码】
    心中时常装有一盘人生的大棋,天作棋盘,星作棋子,在斗转星移中,只有不断地搏击人生,人生才有意义,生命才能彰显光辉,才能收获一分永恒。
  • 相关阅读:
    链表面试题(一):反转链表的算法实现
    Flutter随笔(二)——使用Flutter Web + Docker + Nginx打造一个简单的Web项目
    Spring MVC知识要点
    ddd
    可编辑下拉框(ie6/chrome)
    Ajax+PHP简单实例
    移动app嵌套h5页面meta标签
    为什么python适合写爬虫?(python到底有啥好的?!)
    自学java第一天(写第一个程序)
    git桌面工具
  • 原文地址:https://www.cnblogs.com/top5/p/2267314.html
Copyright © 2011-2022 走看看