帶Cookie的 WebClient

 

 

    /// <summary>
    /// WebClient的擴展
    /// </summary>
    public class webClient : WebClient
    {
        /// <summary>是否重定向 默認爲true</summary>
        public bool AllowAutoRedirect { get; set; }
        /// <summary>
        ///獲取或設置 Referer HTTP 標頭的值。默認值爲 null。
        /// </summary>
        public string Referer { get; set; }
        /// <summary>
        /// 獲取或設置 Content-type HTTP 標頭的值。 默認: application/x-www-form-urlencoded
        /// </summary>
        public string ContentType { get; set; }
        /// <summary>
        /// 獲取或設置 User-agent HTTP 標頭的值。默認:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
        /// </summary>
        public string UserAgent { get; set; }

        /// <summary>
        /// 獲取或設置 GetResponse 和 GetRequestStream 方法的超時值(以毫秒爲單位)。 默認值是 30,000 毫秒(30 秒)。
        /// </summary>
        public int Timeout { get; set; }
        /// <summary>
        /// 獲取或設置寫入或讀取流時的超時(以毫秒爲單位)。默認值爲 300,000 毫秒(5 分鐘)
        /// </summary>
        public int ReadWriteTimeout { get; set; }

        /// <summary>獲取或設置請求相關聯的Cookie</summary>
        public CookieContainer CookieContainer { get; set; }
        /// <summary>建立一個新的 WebClient 實例。</summary>
        public webClient()
        {
            this.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)";
            this.ContentType = "application/x-www-form-urlencoded";
            this.CookieContainer = new CookieContainer();
            this.AllowAutoRedirect = true;
            this.Timeout = 30 * 1000;
            this.ReadWriteTimeout = 300 * 1000;
        }
        protected override WebRequest GetWebRequest(Uri address)
        {
            HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
            if (this.Referer != null) request.Referer = this.Referer;
            if (this.ContentType != null) request.ContentType = this.ContentType;
            if (this.UserAgent != null) request.UserAgent = this.UserAgent;
            request.AllowAutoRedirect = this.AllowAutoRedirect;
            request.CookieContainer = this.CookieContainer; //這句很關鍵,有了他能夠保存返回的Cookie
            request.Timeout = this.Timeout;
            request.ReadWriteTimeout = this.ReadWriteTimeout;
            return request;
        }
    }
相關文章
相關標籤/搜索