龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

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

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
最近在做一个通过HttpWebRequest来实现登陆和自动发信息的小软件,虽然还没有实现,但是今天从一个老外的网站上看到了一个获取CookieContainer很好的方法,拿出来共享一下,这是我看到

最近在做一个通过HttpWebRequest来实现登陆和自动发信息的小软件,虽然还没有实现,但是今天从一个老外的网站上看到了一个获取CookieContainer很好的方法,拿出来共享一下,这是我看到过代码最少而且很不错的了。

   1using System;

   2using System.Runtime.InteropServices;

   3using System.Text;

   4using System.Net;

   5

   6namespace NEXPlus.NSiter

   7{

   8 /**////

   9 /// 获取Cookie的方法类。

  10 ///

  11 public class CookieManger

  12 {

  13 /**////

  14 /// 通过COM来获取Cookie数据。

  15 ///

  16 /// 当前网址。

  17 /// CookieName.

  18 /// 用于保存Cookie Data的实例。

  19 /// Cookie大小。

  20 /// 假如成功则返回true,否则返回false

  21 [DllImport("wininet.dll", SetLastError = true)]

  22 public static extern bool InternetGetCookie(

  23 string url, string cookieName,

  24 StringBuilder cookieData, ref int size);

  25 /**////

  26 /// 获取当前实例。

  27 ///

  28 /// 当前地址。

  29 /// 当前实例。

  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

  

精彩图集

赞助商链接