zoukankan      html  css  js  c++  java
  • WebClient 保持 Session 和 Cookie

    有些朋友说 WebClient 不能保持 Session 和 Cookie,只有 HttpWebRequest 才能保持 Session。实际上我们只要重写 WebClient 的 GetWebRequest 方法就可以使 WebClient 保持 Session 和 Cookie。

    下面是 HttpClient 类, 它继承自 WebClient,并重写了 GetWebRequest 方法。关键是要定义一个 Cookie 容器(红色代码部分):

    /// <summary>
    /// 支持 Session 和 Cookie 的 WebClient。
    /// </summary>

    public class HttpClient : WebClient 
    {
        
    // Cookie 容器
        private CookieContainer cookieContainer;

        
    /// <summary>
        
    /// 创建一个新的 WebClient 实例。
        
    /// </summary>

        public HttpClient()
        
    {
            
    this.cookieContainer = new CookieContainer();
        }


        
    /// <summary>
        
    /// 创建一个新的 WebClient 实例。
        
    /// </summary>
        
    /// <param name="cookie">Cookie 容器</param>

        public HttpClient(CookieContainer cookies)
        
    {
            
    this.cookieContainer = cookies;
        }


        
    /// <summary>
        
    /// Cookie 容器
        
    /// </summary>

        public CookieContainer Cookies
        
    {
            
    get return this.cookieContainer; }
            
    set this.cookieContainer = value; }
        }


        
    /// <summary>
        
    /// 返回带有 Cookie 的 HttpWebRequest。
        
    /// </summary>
        
    /// <param name="address"></param>
        
    /// <returns></returns>

        protected override WebRequest GetWebRequest(Uri address)
        
    {
            WebRequest request 
    = base.GetWebRequest(address);
            
    if (request is HttpWebRequest)
            
    {
                HttpWebRequest httpRequest 
    = request as HttpWebRequest;
                httpRequest.CookieContainer = cookieContainer;
            }

            
    return request;
        }


        
    封装了PostData, GetSrc 和 GetFile 方法
    }

    相关文章:使用WebClient自动填写并提交ASP.NET页面表单 
                 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
  • 相关阅读:
    洗礼灵魂,修炼python(20)--自定义函数(1)—基础概念
    洗礼灵魂,修炼python(19)--文件I/O操作,linecache,fileinput模块
    洗礼灵魂,修炼python(18)--温故加知新
    洗礼灵魂,修炼python(17)--跨平台操作三剑客—os,os.path.sys模块
    洗礼灵魂,修炼python(16)--列表进阶话题—>上节作业讲解+copy模块,浅拷贝,深拷贝
    洗礼灵魂,修炼python(15)--列表进阶话题—>列表解析/列表生成器
    洗礼灵魂,修炼python(14)--模块decimal, fractions,operator,collections以及精度介绍
    洗礼灵魂,修炼python(13)--模块random,math,pickle
    748. Shortest Completing Word
    542. 01 Matrix
  • 原文地址:https://www.cnblogs.com/anjou/p/1206832.html
Copyright © 2011-2022 走看看