问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-04-22 11:50

我来回答

2个回答

懂视网 时间:2022-05-11 02:11

上一篇文章说到了web.py初探之第一个页面hello word,下面我们继续深入web.py编程,来说一下web.py的cookie设置。


cookie相信学过web编程的人并不陌生,它在web编程中担任着非常重要的角色。用户登录、验证码、session(基于cookie)、语言选择器、身份识别等等都会有cookie的身影。那么怎么样在web.py中设置cookie呢?


其实在web.py中设置cookie非常简单,web.py早已经为我们想到了这一点,提供了一个非常简单有用的函数:

setcookie(name, value, expires="", domain=None, secure=False)

参数详解:

name (string) - Cookie的名称,由浏览器保存并发送至服务器。

value (string) -Cookie的值,与Cookie的名称相对应。

expires (int) - Cookie的过期时间,这是个可选参数,它决定cookie有效时间是多久。以秒为单位。它必须是一个整数,而绝不能是字符串。可选参数,不写该参数则默认永久有效。

domain (string) - Cookie的有效域-在该域内cookie才是有效的。一般情况下,要在某站点内可用,该参数值该写做站点的域(比如.webpy.org),而不是站主的主机名(比如wiki.webpy.org),可选参数

secure (bool)- 如果为True,要求该Cookie只能通过HTTPS传输。可选参数


例如:

#设置website的值为www.pythontab.com,有效期60秒
web.setcookie("website", "www.pythontab.com", 60)

示例


用web.setcookie() 设置cookie,如下:

class CookieSet:
 def GET(self):
 i = web.input(age='25')
 web.setcookie('age', i.age, 3600)
 return "Age set in your cookie"


用 GET方式调用上面的类将设置一个名为age,默认值是25的cookie(实际上,默认值25是在web.input中赋予i.age的,从而间接赋予 cookie,而不是在setcookie函式中直接赋予cookie的)。这个cookie将在一小时后(即3600秒)过期。


web.setcookie()的第三个参数-"expires"是一个可选参数,它用来设定cookie过期的时间。如果是负数,cookie将立刻过期。如果是正数,就表示cookie的有效时间是多久,以秒为单位。如果该参数为空,cookie就永不过期。


获得Cookies


概述

获取Cookie的值有很多方法,它们的区别就在于找不到cookie时如何处理。


方法1(如果找不到cookie,就返回None):

通过get方法获得

#通过设置的cookie的名字获取cookie,例如website
#web.cookies().get("website") 
web.cookies().get(cookieName)



方法2(如果找不到cookie,就抛出AttributeError异常):

#先把cookie对象赋值给一个变量,然后通过cookie的名字获得
#例如:foo.website
foo = web.cookies()
foo.cookieName


方法3(如果找不到cookie,可以设置默认值来避免抛出异常):

#该方法最大的特点就是可以设置cookie的默认值
foo = web.cookies(cookieName=defaultValue)
#如果不存在该cookieName,就会返回设置的默认cookie
foo.cookieName


如果要确认cookie值是否存在,

可以这样做:

class CookieGet:
 def GET(self):
 try:
  return "Your website name is: " + web.cookies().website
 except:
  #抛出异常处理
  return "Cookie 不存在."


class CookieGet:
 def GET(self):
 #先进行赋值
 website = web.cookies().get('website')
 if age:
  return "Your website name is: %s" % website
 else:
  return "Cookie 不存在."

热心网友 时间:2022-05-10 23:19

1.在WebBrowser中获取Cookie

CookieContainer myCookieContainer = new CookieContainer();

string cookieStr = webBrowser1.Document.Cookie;
string[] cookstr = cookieStr.Split(';');
foreach (string str in cookstr)
{
string[] cookieNameValue = str.Split('=');
Cookie ck = new Cookie(cookieNameValue[0].Trim ().ToString(), cookieNameValue[1].Trim ().ToString());
ck.Domain = "www.google.com";
myCookieContainer.Add(ck);
}

WebClient设置cookie!
WebClient wc = new WebClient();
wc.Headers.Add("Cookie", "PHPSESSID=" + cookie + ";");
// 注意,这里是Cookie,不是Set-Cookie
byte[] re = wc.UploadData(Global.RootPath + "test.php", new byte[0]);
System.Text.UTF8Encoding converter = new System.Text.UTF8Encoding();
string str = converter.GetString(re);

2. 在WebBrowser中设置Cookie
public partial class WebBrowserControl : Form
{
private String url;

[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);

public WebBrowserControl(String path)
{
this.url = path;
InitializeComponent();

// set cookie
InternetSetCookie(url, "JSESSIONID", Globals.ThisDocument.sessionID);

// navigate
webBrowser.Navigate(url);
}
}

3.将WebBrowser的cookie信息传给HttpWebRequest

先建一个"CookieContainer" 把WebBrowser中的Cookie保存在里面

//在WebBrowser中登录cookie保存在WebBrowser.Document.Cookie中
CookieContainer myCookieContainer = new CookieContainer();

//String 的Cookie 要转成 Cookie型的 并放入CookieContainer中
string cookieStr = webBrowser1.Document.Cookie;
string[] cookstr = cookieStr.Split(';');

foreach (string str in cookstr)
{
string[] cookieNameValue = str.Split('=');
Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), cookieNameValue[1].Trim().ToString());
ck.Domain = "www.abc.com";//必须写对
myCookieContainer.Add(ck);
}

HttpWebRequest hreq = (HttpWebRequest)HttpWebRequest.Create("http://www.abc.com/search.asp");
hreq.Method = "POST";
hreq.ContentType = "application/x-www-form-urlencoded";

//自己创建的CookieContainer
hreq.CookieContainer = myCookieContainer;

string postdata = "id=2005&action=search&name=";
byte[] byte1 = Encoding.ASCII.GetBytes(postdata);
hreq.ContentLength = byte1.Length;

Stream poststream = hreq.GetRequestStream();
poststream.Write(byte1, 0, byte1.Length);
poststream.Close();

HttpWebResponse hres = (HttpWebResponse)hreq.GetResponse();
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
宜昌夷陵区丶西陵区哪个区最繁华 宜昌哪些地方租房子好 宜昌CBD中心商务区项目分段定位 宜昌哪个地段房子好 奥迪a6油箱盖按键在什么位置 奥迪a6汽车加油盖按钮在哪 奥迪a6油箱盖怎么开 奥迪a6油箱盖的开关在哪里 图文结合带你搞懂MySQL日志之Error Log(错误日志) 变电站电磁辐射安全标准 ...马自达车辆搭载创驰蓝天GVC系统技术的好处是什么? GVC是什么鬼?你们知道么? 百度和IE浏览器怎么获取cookie edge浏览器怎么查看cookies 如何将U盘上的文件发送到硬盘上 java代码如何读取到浏览器中的cookie值 怎么把u盘的文件传到手机上 如何获取浏览器中cookie的值 u盘里的东西怎么传到电脑上 如何打开浏览器上的cookie?在哪里打开啊~! 为什么登录了华为帐号还是不能用 华为手机par-al00只能用数据.不能用网络是什么原因? 火狐浏览器怎么查看cookie 华为平板BZT-AL00usb无法连接电脑也不能恢复出厂设置,怎么刷机到原来的系统? 谷歌浏览器怎么获得cookie u盘文件怎么发送到手机上 华为MLA-AL00怎么打开USB连接 在浏览器中怎么查看cookie内容 怎么把电脑的照片传到华为Al00上面去? 怎么打开浏览器的cookie功能 华为手机ART-AL00X如何通过USB线与电脑联网? OPPOA57 获取cookie的方法 太阳眼镜脱膜怎么办,该如何修复 u盘里的文件怎么传到手机里 java 怎么获取浏览器cookie qq浏览器flash怎么启用? 怎么在QQ浏览器使用QQ工具栏? 怎么找不到QQ浏览器工具栏的 腾讯浏览器工具在哪 QQ浏览器的工具在哪里 qq浏览器网页怎么调页面设置 word文档怎么做矩形图 qq浏览器的界面怎么设置 QQ浏览器怎么设置多页面窗口 模式 word怎么矩形选中 为什么qq浏览器打开的都是上网导航 流程图中的圆角矩形表示什么意思? 如何让QQ浏览器在新的窗口打开链接 qq浏览器如何设置成多窗口模式 qq浏览器网页打开怎么不是在新标签页 在word中利用鼠标选定一个矩形框是需要先按住什么按键