国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

通過COM來獲取CookieContainer,簡單又好用

2024-05-04 11:07:31
字體:
供稿:網(wǎng)友
最近在做一個通過HttpWebRequest來實現(xiàn)登陸和自動發(fā)信息的小軟件,雖然還沒有實現(xiàn),但是今天從一個老外的網(wǎng)站上看到了一個獲取CookieContainer很好的方法,拿出來共享一下,這是我看到過代碼最少而且很不錯的了。
 1using System;
 2using System.Runtime.InteropServices;
 3using System.Text;
 4using System.Net;
 5
 6namespace NExplus.NSiter
 7{
 8    /**//// <summary>
 9    /// 獲取Cookie的方法類。
10    /// </summary>
11    public class CookieManger
12    {
13        /**//// <summary>
14        /// 通過COM來獲取Cookie數(shù)據(jù)。
15        /// </summary>
16        /// <param name="url">當(dāng)前網(wǎng)址。</param>
17        /// <param name="cookieName">CookieName.</param>
18        /// <param name="cookieData">用于保存Cookie Data的<see cref="StringBuilder"/>實例。</param>
19        /// <param name="size">Cookie大小。</param>
20        /// <returns>如果成功則返回<c>true</c>,否則返回<c>false</c>。</returns>
21        [DllImport("wininet.dll", SetLastError = true)]
22        public static extern bool InternetGetCookie(
23          string url, string cookieName,
24          StringBuilder cookieData, ref int size);
25        /**//// <summary>
26        /// 獲取當(dāng)前<see cref="Uri"/>的<see cref="CookieContainer"/>實例。
27        /// </summary>
28        /// <param name="uri">當(dāng)前<see cref="Uri"/>地址。</param>
29        /// <returns>當(dāng)前<see cref="Uri"/>的<see cref="CookieContainer"/>實例。</returns>
30        public static CookieContainer GetUriCookieContainer(Uri uri) {
31            CookieContainer cookies = null;
32
33            // 定義Cookie數(shù)據(jù)的大小。
34            int datasize = 256;
35            StringBuilder cookieData = new StringBuilder(datasize);
36
37            if (!InternetGetCookie(uri.ToString(), null, cookieData,
38              ref datasize)) {
39                if (datasize < 0)
40                    return null;
41
42                // 確信有足夠大的空間來容納Cookie數(shù)據(jù)。
43                cookieData = new StringBuilder(datasize);
44                if (!InternetGetCookie(uri.ToString(), null, cookieData,
45                  ref datasize))
46                    return null;
47            }
48
49
50            if (cookieData.Length > 0) {
51                cookies = new CookieContainer();
52                cookies.SetCookies(uri, cookieData.ToString().Replace(';', ','));
53            }
54            return cookies;
55        }
56
57    }
58}  是不是相當(dāng)簡單阿,希望對大家有一點用處。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 突泉县| 荥经县| 施甸县| 迁西县| 吉林省| 甘德县| 德江县| 镶黄旗| 临洮县| 海盐县| 莆田市| 高密市| 沭阳县| 怀安县| 吴堡县| 双流县| 文登市| 华安县| 柳江县| 林甸县| 察哈| 永泰县| 深州市| 犍为县| 孙吴县| 时尚| 东方市| 泰顺县| 抚顺市| 古田县| 永城市| 张掖市| 乌苏市| 自治县| 广昌县| 叙永县| 溆浦县| 北辰区| 昌平区| 北辰区| 叙永县|