Я пытаюсь зайти на сайт, затем прогуляться, чтобы найти какую-то информацию и что-то в ней сделать.
Все хорошо, когда для запроса не нужны файлы 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, который может собрать все кокки, чтобы помочьмне открыть все страницы.
Я надеюсь, что кто-то может мне помочь.С наилучшими пожеланиями!