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代码】
心中时常装有一盘人生的大棋,天作棋盘,星作棋子,在斗转星移中,只有不断地搏击人生,人生才有意义,生命才能彰显光辉,才能收获一分永恒。
posted @ 2011-11-29 11:02  与时俱进  阅读(4041)  评论(0编辑  收藏  举报
友情链接:同里老宅院民居客栈