Как я могу заставить WebClient использовать Cookies?

Я хочу, чтобы VB.net WebClient запоминал cookies.

Я искал и пробовал многочисленные classы перегрузок.

Я хочу войти на сайт через POST, затем POST на другую страницу и получить ее содержимое, сохраняя при этом мою сессию.

Возможно ли это с VB.net без использования элемента управления WebBrowser?

Я пробовал Chilkat.HTTP, и он работает, но я хочу использовать библиотеки .Net.

2 Solutions collect form web for “Как я могу заставить WebClient использовать Cookies?”

Создайте новый class, наследующий от WebClient, который хранит CookieContainer, как говорит @Guffa. Вот код, который я использую, который делает это, а также сохраняет референт в живых:

Public Class CookieAwareWebClient Inherits WebClient Private cc As New CookieContainer() Private lastPage As String Protected Overrides Function GetWebRequest(ByVal address As System.Uri) As System.Net.WebRequest Dim R = MyBase.GetWebRequest(address) If TypeOf R Is HttpWebRequest Then With DirectCast(R, HttpWebRequest) .CookieContainer = cc If Not lastPage Is Nothing Then .Referer = lastPage End If End With End If lastPage = address.ToString() Return R End Function End Class 

Вот версия C # вышеприведенного кода:

 using System.Net; class CookieAwareWebClient : WebClient { private CookieContainer cc = new CookieContainer(); private string lastPage; protected override WebRequest GetWebRequest(System.Uri address) { WebRequest R = base.GetWebRequest(address); if (R is HttpWebRequest) { HttpWebRequest WR = (HttpWebRequest)R; WR.CookieContainer = cc; if (lastPage != null) { WR.Referer = lastPage; } } lastPage = address.ToString(); return R; } } 

Вы не можете заставить class WebClient запомнить куки-файлы, вы должны получить контейнер cookie из ответа и использовать его в следующем запросе.

  • ASP.NET-controller: asynchronous модуль или обработчик завершен, пока асинхронная операция все еще находится на рассмотрении
  • Как отправить данные на определенный URL-адрес с помощью WebClient в C #
  • WebClient vs. HttpWebRequest / HttpWebResponse
  • Как изменить таймаут на объекте .NET WebClient
  • C # - Как сделать HTTP-вызов
  • Какая разница между classами WebClient и HTTPWebRequest в .NET?
  • Автоматически распаковывать ответ gzip через WebClient.DownloadData
  • Установите тайм-аут для webClient.DownloadFile ()
  • Загрузите и загрузите двоичный файл на / из FTP-сервера в C # /. NET
  • Использование WebClient или WebRequest для входа на веб-сайт и доступа к данным
  • Возможно ли передать аутентификацию из Webbrowser в WebRequest
  • Interesting Posts

    RPM не удалит установленные каталоги, если они были изменены после первоначальной установки

    Как импортировать CSV-файл в таблицу MySQL

    Использование getResources () в неактивном classе

    SCRIPT7002: XMLHttpRequest: ошибка сети 0x2ef3, не удалось завершить операцию из-за ошибки 00002ef3

    Рабочая станция VMware: как уменьшить максимальный размер .vmdk

    Можно ли одновременно использовать Mac несколькими пользователями?

    Ошибка установки libxml с помощью pip

    Анимация WPF: привязка к атрибуту «To» анимации раскадровки

    Как удалить верхний и нижний колонтитулы с определенных страниц в Microsoft Word

    Что такое «% AppData%»?

    Операции с несколькими агрегатами в одном столбце блока данных искробезопасности

    Массивы, распадающиеся на указатели

    Среднее значение для каждой группы в файле data.frame

    Поиск в папке ярлыков?

    Идентификаторы jquery с пробелами

    Давайте будем гением компьютера.