C#WebBrowser怎么获取和设置Cookie的方法

C#WebBrowser怎么获取和设置Cookie的方法,第1张

如果要设置也是一样的

[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持有自己的cookie

Cookie是由服务器端生成,发送给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方法


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7867259.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存