Fork me on GitHub

HttpWebRequest采集读取网站挂载Cookie的通用方法

Asp.net 版本

HttpWebRequest采集时添加:httpWebRequest.CookieContainer = new CookieContainer();就能远程挂载上cookie,那么怎样去读取挂载上的cookie呢?

下面方法为大家解除烦恼。

遍历方法:

public static List<Cookie> GetAllCookies(CookieContainer cc)
{
    List<Cookie> lstCookies = new List<Cookie>();

    Hashtable table = (Hashtable)cc.GetType().InvokeMember("m_domainTable", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance, null, cc, new object[] { });
    StringBuilder sb = new StringBuilder();
    foreach (object pathList in table.Values)
    {
        SortedList lstCookieCol = (SortedList)pathList.GetType().InvokeMember("m_list", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.GetField | System.Reflection.BindingFlags.Instance, null, pathList, new object[] { });
        foreach (CookieCollection colCookies in lstCookieCol.Values)
            foreach (Cookie c in colCookies)
            {
                lstCookies.Add(c);
                sb.AppendLine(c.Domain + ":" + c.Name + "____" + c.Value + "\r\n");
            }
    }
    return lstCookies;
}

使用:

List<Cookie> _cookieList = GetAllCookies(req.CookieContainer);
string _cookieValue = _cookieList[0].ToString();

 

posted @ 2012-10-09 11:23  磊哥|www.javacn.site  阅读(2671)  评论(4编辑  收藏  举报