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

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

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

最近在做一个通过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} 是不是相当简单阿,希望对大家有一点用处。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 通过COM来获取CookieContainer,简单又好用

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情