C # получить или установить куки, чтобы загружать контент из Интернета, используя куки - PullRequest
4 голосов
/ 23 июля 2011

Мне нужна помощь с куки. Я планирую использовать куки для загрузки веб-контента. Чтобы получить контент, мне нужно войти на веб-сайт, потому что только авторизованные пользователи могут загружать веб-контент или файлы. Я использую

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

и затем я очищаю исходный код, и мне нужно получить ссылку на файл, но я не могу получить, потому что я не авторизован, поэтому мне нужно установить куки. Я не работал с куки раньше. Как мне это сделать?

Ответы [ 4 ]

7 голосов
/ 23 июля 2011

Если вы говорите о создании веб-приложения asp.net, которое может создавать файлы cookie, то это должно сработать:

Не уверен, что это будет работать в asp.net mvc, хотя, это работает в веб-формах asp.net

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; 
2 голосов
/ 24 июля 2011

Я создал небольшое небольшое приложение, которое помогает генерировать веб-запросы для меня

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, вы можете сохранять / использовать файлы cookie в своих веб-запросах.

0 голосов
/ 24 июля 2011

Вам следует установить свойство CookieContainer класса HTTPWebRequest для экземпляра класса CookieContainer . От MSDN указано, что:

CookieContainer по умолчанию равен нулю. Вы должны назначить объект CookieContainer свойству, чтобы куки возвращались в свойстве Cookies HttpWebResponse, возвращаемого методом GetResponse.

Другими словами, после того как вы установили свойство CookieContainer объекта HTTPWebRequest в своем коде, вы можете получить соответствующие Cookies в объекте HTTPWebResponse в своем коде. Пример кода в указанной выше ссылке MSDN должен помочь вам начать работу.

0 голосов
/ 23 июля 2011

Не могли бы вы быть более конкретным о проекте? это настольное приложение, ASP.NET, ASP.NET MVC?

в ASP.NET MVC Я использовал метод SetPersistenCookie каждый раз, когда пользователь входит в систему, а для методов я использую атрибут авторизации, каждый раз, когда пользователь хочет получить доступ к somenthig и он не вошел в систему, он перенаправляет его на страницу входа в систему. ..

...