zoukankan      html  css  js  c++  java
  • .NET 中使用 HttpWebResponse 时 Cookie 的读取

    今天把一个网站登录配置到以前写的蜘蛛程序中,发现不能成功登录。检查后才发现,那个网站在登录成功后,输出了一个特殊路径的 Cookie,由于是使用 HttpWebRequest.Cookies 来获取的 Cookie,默认是获得当前路径相关的 Cookie,里面少了那个特殊的 Cookie,查了半天资料,也没有一个好的解决办法。最后采用 HttpWebResponse.Headers["Set-Cookie"] 来获得所有的 Cookie 字符串,然后写一段代码把这些 Cookie 字符串转换到 CookieCollection 中,解决了问题,以下是部分代码:

         #region 读取 Cookie
         string strCookie=myWebResponse.Headers["Set-Cookie"];
         AddCookieWithCookieHead(CookieCol,strCookie,uri.Host);
         #endregion

      #region 从包含多个 Cookie 的字符串读取到 CookieCollection 集合中
      private static void AddCookieWithCookieHead(CookieCollection cookieCol,string cookieHead,string defaultDomain)
      {
       if(cookieHead==null)return;
       string[] ary=cookieHead.Split(';');
       for(int i=0;i   for(int i=0;i   {
        Cookie ck=GetCookieFromString(ary[i].Trim(),defaultDomain);
        if(ck!=null)
        {
         cookieCol.Add(ck);
        }
       }
      }
      #endregion
      #region 读取某一个 Cookie 字符串到 Cookie 变量中
      private static Cookie GetCookieFromString(string cookieString,string defaultDomain)
      {
       string[] ary=cookieString.Split(',');
       Hashtable hs=new Hashtable();
       for(int i=0;i   {
        string s=ary[i].Trim();
        int index=s.IndexOf("=");
        if(index>0 && index    {
         hs.Add(s.Substring(0,index),s.Substring(index+1));
        }
       }
       Cookie ck=new Cookie();
       foreach(object Key in hs.Keys)
       {
        if(Key.ToString()=="path")ck.Path=hs[Key].ToString();

        else if(Key.ToString()=="expires")
        {
         //ck.Expires=DateTime.Parse(hs[Key].ToString();
        }
        else if(Key.ToString()=="domain")ck.Domain=hs[Key].ToString();
        else
        {
         ck.Name=Key.ToString();
         ck.Value=hs[Key].ToString();
        }
       }
       if(ck.Name=="")return null;
       if(ck.Domain=="")ck.Domain=defaultDomain;
       return ck;
      }
      #endregion

  • 相关阅读:
    矩阵补全(Matrix Completion)和缺失值预处理
    【机器学习基础】对 softmax 和 cross-entropy 求导
    Mendeley使用小技巧
    [Active Learning] Multi-Criteria-based Active Learning
    回归树(Regression Tree)
    Typora + Mathpix Snip,相见恨晚的神器
    【机器学习之数学】02 梯度下降法、最速下降法、牛顿法、共轭方向法、拟牛顿法
    【机器学习之数学】01 导数、偏导数、方向导数、梯度
    “卷积神经网络(Convolutional Neural Network,CNN)”之问
    一篇带你完全掌握线程的博客
  • 原文地址:https://www.cnblogs.com/zhwl/p/3158056.html
Copyright © 2011-2022 走看看