WEB开发网
开发学院软件开发C++ 通过COM来获取CookieContainer,简单又好用 阅读

通过COM来获取CookieContainer,简单又好用

 2008-03-08 12:24:57 来源:WEB开发网   
核心提示: 最近在做一个通过HttpWebRequest来实现登陆和自动发信息的小软件,虽然还没有实现,通过COM来获取CookieContainer,简单又好用,但是今天从一个老外的网站上看到了一个获取CookieContainer很好的方法,拿出来共享一下,34 int datasize = 256;35 StringB
 最近在做一个通过HttpWebRequest来实现登陆和自动发信息的小软件,虽然还没有实现,但是今天从一个老外的网站上看到了一个获取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数据。
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);
25     /**//// <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>
30     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,
38        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
50       if (cookieData.Length > 0) {
51         cookies = new CookieContainer();
52         cookies.SetCookies(uri, cookieData.ToString().Replace(';', ','));
53       }
54       return cookies;
55     }
56
57   }
58}  是不是相当简单阿,希望对大家有一点用处。
http://www.cnblogs.com/xdotnet/archive/2007/01/08/cookie_container_com.html

Tags:通过 COM 获取

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接