c # WebClient перехватывает ответные куки и собирает все куки для новых успешных запросов - PullRequest
0 голосов
/ 19 декабря 2018

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

Все хорошо, когда для запроса не нужны файлы cookie, но для какой-то страницы нужен файл cookie, который создается напервый запросПоэтому я должен собрать все куки в объекте WebClient.

Я использую этот код, но мне его недостаточно.Потому что до сих пор я пропускаю все свои куки для следующего запроса.

public class CookieAwareWebClient : WebClient
{
    public CookieContainer CookieContainer { get; set; }
    public CookieCollection ResponseCookies { get; set; }
    //public CookieContainer ResponseCookieContainer { get; set; }


    public CookieAwareWebClient()
      : base()
    {
        CookieContainer = new CookieContainer();
        ResponseCookies = new CookieCollection();
    }

    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest request = base.GetWebRequest(address);

        HttpWebRequest webRequest = request as HttpWebRequest;
        if (webRequest != null)
        {
            webRequest.CookieContainer = CookieContainer;
        }

        return request;
    }

    protected override WebResponse GetWebResponse(WebRequest request)
    {
        var response = (HttpWebResponse)base.GetWebResponse(request);
        this.ResponseCookies = response.Cookies;


        return response;

    }

Вот мой код для запроса на создание.

var loginLink ="https...."; // an Uri with username and password values as queryString

   CookieAwareWebClient client = new CookieAwareWebClient();
   var loginResult = client.DownloadString(loginLink);

Я вижу результат, да я в деле!вход в систему прошел успешно, но я теряю все свои cookie-файлы, и следующий запрос отправляет меня на страницу входа ..

Я должен собрать все cookie-файлы в моем webcilent cookieContainer.Я должен прочитать заголовок ответа для набора значений «Set-Cookie» для моего контейнера.

Подумайте об этом, у меня есть 3 ключа в моих куки перед запросом.

a = "123",
b = "asd",
c = "123"

, и теперь я отправляю запрос на сайт, и он возвращает мне 2 куки (один новый и одинстарый ключ с новым значением) назад, (я вижу в заголовках ответа, в "Set-Cookie")

a = "123456",
d = "blabla"

, поэтому мне нужно изменить ключ значения "a", и мне нужно добавить«d» ключ к моему Cookie, потому что я не хочу снова возвращаться на страницу входа в мой следующий запрос ...

Может быть, мне нужна библиотека, может быть, лучший класс WebClient, который может собрать все кокки, чтобы помочьмне открыть все страницы.

Я надеюсь, что кто-то может мне помочь.С наилучшими пожеланиями!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...