c#获取或设置cookie,使用cookie从web下载内容
本文关键字:cookie web 下载 获取 设置 使用 | 更新日期: 2023-09-27 18:03:21
我需要你帮我做饼干。我打算用cookie来下载网页内容。要获得的内容,我需要登录到一个网站,因为只有授权用户可以下载网页内容或文件。我使用
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
,然后我在抓取源代码,我需要得到到文件的链接,但我不能得到,因为我没有被授权,所以我需要设置cookie。我以前没做过饼干。我该怎么做呢?
如果你正在谈论创建一个可以创建cookie的asp.net web应用程序,那么这样做应该可以工作:
不确定这是否会工作在asp.net mvc虽然,这工作在asp.net web表单
Response.Cookies["nameOfCookie"].Value = "someValue";
Response.Cookies["nameOfCookies].Expires = DateTime.Now.AddDays(1);
然后在同一页面或不同页面的帖子中,可以通过
获取cookiestring value = string.Empty;
if (Request.Cookies["nameOfCookie"] != null)
value = Request.Cookies["nameOfCookie"].Value;
我创建了一个快速的小应用程序来帮助我生成web请求
public class HttpRequestHandler {
private CookieContainer cookies;
public HttpRequestHandler() {
cookies = new CookieContainer();
}
public HttpWebRequest GenerateWebRequest(string url) {
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new System.Uri(url));
request.CookieContainer = cookies;
request.AllowAutoRedirect = true;
request.KeepAlive = true;
request.Referer = HttpUtility.UrlEncode(referer);
request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009021910 Firefox/3.0.7 (.NET CLR 3.5.30729)";
request.Headers.Add("Pragma", "no-cache");
request.Timeout = 40000;
return request;
}
}
您的问题可能与缺乏CookieContainer有关。如果你创建了一个cookie容器,你可以在你的web请求中保存/使用cookie。
您应该将HTTPWebRequest类的CookieContainer属性设置为CookieContainer类的实例。来自MSDN,声明:
CookieContainer默认为空。你必须给这个属性分配一个CookieContainer对象,以便在GetResponse方法返回的HttpWebResponse的cookies属性中返回cookies。
换句话说,在代码中设置了HTTPWebRequest对象的CookieContainer属性后,可以在代码中的HTTPWebResponse对象中获得相应的Cookies。上面共享的MSDN链接中的样例代码应该可以帮助您入门。
你能更具体地说一下这个项目吗?它是一个桌面应用程序吗?净,ASP。净MVC吗?
在ASP。. NET MVC我使用SetPersistenCookie方法每次当用户登录,我使用的方法授权属性,每次当用户想要访问的东西,他没有登录它重定向到登录页面…