[code=csharp]//设置Cookie
webBrowser1.Document.Cookie=strcookie[/code]
但是有时候使用这种方法会获取不全,或者是获取不到,下面我提供一个方法
[C#] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
//取当前webBrowser登录后的Cookie值
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref int pcchCookieData, int dwFlags, object lpReserved)
//取出Cookie,当登录后才能取
private static string GetCookieString(string url)
{
// Determine the size of the cookie
int datasize = 256
StringBuilder cookieData = new StringBuilder(datasize)
if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, null))
{
if (datasize <0)
return null
// Allocate stringbuilder large enough to hold the cookie
cookieData = new StringBuilder(datasize)
if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, null))
return null
}
return cookieData.ToString()
}
在很多情况下我们会使用间进程的webBrowser去实现一些网页的请求和抓去,这个时候有部分网页是取不到Cookie的,那怎么办呢?下面我提供一个方法,应该99%的都能取到
使用方法也很简单
[code=csharp]//获取Cookie
string strcookie=GetCookieString(“你要获取Cookie的URl”)[/code]例如
[code=csharp]//获取Cookie
string strcookie=GetCookieString(“http://www.sufeinet.com”)[/code]
这样获取的是sufeinet.com的Cookie信息
webbrowser和ie是共享cookie的,你从ie里登录了之后webbrowser也是登录的,所以实现起来不是很容易,而且多用户登录的话肯定要多个线程,winform是不能多个线程每个线程里持有一个webBrowser的,以前做过多个线程每个线程持有一个WebClient,然后每个WebClient持有自己的cookieCookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等,服务器可以设置或读取Cookies中包含信息,借此维护用户跟服务器会话中的状态。1.获取Cookie的值:获取Cookie值的标准代码格为:myCookie.Values["auth"]
上句代码可以获取名为myCookie的Cookie对象键名为auth的键值。如果不存在,则返回null。
DateTime now=new DateTime.Now
Response.Cookies["Info"].Expires = DateTime.Now.AddDays(1)
//设定Cookie过期时间下面的代码示例演示删除应用程序中所有可用 Cookie 的一种方法
2.代码如下:
HttpCookie aCookie
string cookieName
int limit = Request.Cookies.Count
for (int i = 0i <limiti++)
{
cookieName = Request.Cookies[i].Name
aCookie = new HttpCookie(cookieName)
aCookie.Expires = DateTime.Now.AddDays(-1)
Response.Cookies.Add(aCookie)
}
3.以上就是Java程序开发中涉及到的获取cookie方法
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)