首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
Google
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> C# >> 正文

通过COM获取CookieContainer,简单好用

     最近在做一个通过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
【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航