快速业务通道

WebClient保持 Session和Cookie

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-04-12

有些朋友说 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 方法#region 封装了PostData, GetSrc 和 GetFile 方法
    /**//// <summary>
    /// 向指定的 URL POST 数据,并返回页面
    /// </summary>
    /// <param name="uriString">POST URL</param>
    /// <param name="postString">POST 的 数据</param>
    /// <p

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号