C#下的WebClient保存session和cookie的方法

C#下的WebClient保存session和cookie的方法

其實實現方法挺簡單,繼承到WebClient,然後重寫其的相關方法即可了,同時還有針對模擬post提交數據時的編碼問題,也遇到了,在提交發表信息的時候,默認的好像是按照本機語言的默認編碼?還是什麼?具體不大瞭解,中間修改了下,然後針對GBK和UTF-8,測試OK了.保存下,以後或許用的到.

WebClient保存session代碼,重寫類

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;

namespace DiscuzPost
{
    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;
        }
    }
}

post數據改變其編碼

using System;
using System.Collections.Generic;
using System.Text;

namespace DiscuzPost
{
    class CharSet
    {
        public static byte[] get(string charset,string str){
            byte[] byteArray;
            if ("utf-8".Equals(charset.ToLower()))
            {
                byteArray = Encoding.UTF8.GetBytes(str);
            }
            else
            {
                byteArray = Encoding.Default.GetBytes(str);
            }
            return byteArray;
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章