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。我以前没做过饼干。我该怎么做呢?

c#获取或设置cookie,使用cookie从web下载内容

如果你正在谈论创建一个可以创建cookie的asp.net web应用程序,那么这样做应该可以工作:

不确定这是否会工作在asp.net mvc虽然,这工作在asp.net web表单

Response.Cookies["nameOfCookie"].Value = "someValue";
Response.Cookies["nameOfCookies].Expires = DateTime.Now.AddDays(1);

然后在同一页面或不同页面的帖子中,可以通过

获取cookie
string 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方法每次当用户登录,我使用的方法授权属性,每次当用户想要访问的东西,他没有登录它重定向到登录页面…