博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#一个到多个Cookie的字符串添加到CookieCollection集合中【isGood代码】
阅读量:4582 次
发布时间:2019-06-09

本文共 2930 字,大约阅读时间需要 9 分钟。

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代码】
心中时常装有一盘人生的大棋,天作棋盘,星作棋子,在斗转星移中,只有不断地搏击人生,人生才有意义,生命才能彰显光辉,才能收获一分永恒。

转载于:https://www.cnblogs.com/top5/archive/2011/11/29/2267314.html

你可能感兴趣的文章
(转)JAVA Calendar详解
查看>>
转: 编码,charset,乱码,unicode,utf-8与net简单释义
查看>>
C#--正则匹配
查看>>
5.30 考试修改+总结
查看>>
BA-设计施工调试流程
查看>>
C#-CLR各版本特点
查看>>
css3背景透明文字不透明
查看>>
《java JDK7 学习笔记》之接口与多态
查看>>
LeetCode 96:Unique Binary Search Trees
查看>>
kernel-char设备的建立
查看>>
DVWA-CSRF
查看>>
ubuntu common software introduction
查看>>
资源相互引用时 需添加 PerformSubstitution=True
查看>>
MapRedece(单表关联)
查看>>
蒲公英App开发之检测新版本
查看>>
【安卓基础】倒计时按钮封装(验证码倒计时按钮)
查看>>
configparser模块
查看>>
SelectQueryBuilder的用法
查看>>
android的用户定位(一)
查看>>
creat-react-app搭建的项目中按需引入antd以及配置Less和如何修改antd的主题色
查看>>