通过COM来获取指定url的Cookie(转载)

 1 using  System;
 2 using  System.Runtime.InteropServices;
 3 using  System.Text;
 4 using  System.Net;
 5
 6 namespace  NExplus.NSiter
 7 ExpandedBlockStart.gifContractedBlock.gif {
 8ExpandedSubBlockStart.gifContractedSubBlock.gif    /**//// <summary>
 9    /// 获取Cookie的方法类。
10    /// </summary>

11    public class CookieManger
12ExpandedSubBlockStart.gifContractedSubBlock.gif    {
13ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
14        /// 通过COM来获取Cookie数据。
15        /// </summary>
16        /// <param name="url">当前网址。</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);
25ExpandedSubBlockStart.gifContractedSubBlock.gif        /**//// <summary>
26        /// 获取当前<see cref="Uri"/><see cref="CookieContainer"/>实例。
27        /// </summary>
28        /// <param name="uri">当前<see cref="Uri"/>地址。</param>
29        /// <returns>当前<see cref="Uri"/><see cref="CookieContainer"/>实例。</returns>

30ExpandedSubBlockStart.gifContractedSubBlock.gif        public static CookieContainer GetUriCookieContainer(Uri uri) {
31            CookieContainer cookies = null;
32
33            // 定义Cookie数据的大小。
34            int datasize = 256;
35            StringBuilder cookieData = new StringBuilder(datasize);
36
37            if (!InternetGetCookie(uri.ToString(), null, cookieData,
38ExpandedSubBlockStart.gifContractedSubBlock.gif              ref datasize)) {
39                if (datasize < 0)
40                    return null;
41
42                // 确信有足够大的空间来容纳Cookie数据。
43                cookieData = new StringBuilder(datasize);
44                if (!InternetGetCookie(uri.ToString(), null, cookieData,
45                  ref datasize))
46                    return null;
47            }

48
49
50ExpandedSubBlockStart.gifContractedSubBlock.gif            if (cookieData.Length > 0{
51                cookies = new CookieContainer();
52                cookies.SetCookies(uri, cookieData.ToString().Replace(';'','));
53            }

54            return cookies;
55        }

56
57    }

58}

转载于:https://www.cnblogs.com/Dot-Boy/archive/2008/08/04/1259733.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值