Задать вопрос

Как в WebClient на C# прочитать куку?

Приложение на C# скачивает файл

string link = @"http://localhost:2613/siteapi/getfile"; 
WebClient webClient = new WebClient();
webClient.Headers.Add(HttpRequestHeader.Cookie, "accesscode=123456");
webClient.DownloadFileAsync(new Uri(link), @"c:\Download\" + "file.txt");


Сервер ответит другой кукой и отдаст файл.
Как можно прочитать куку в респонсе WebClient ?
  • Вопрос задан
  • 1146 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
Rou1997
@Rou1997
Никак, потому что вы не работаете с ответом сервера, метод DownloadFileAsync скрывает его от вас, для полноценной поддержки HTTP переходите на HttpWebRequest или RestSharp, между прочим WebClient внутри тоже не идеален, вроде бы файлы недокачивал, а переписал на HttpWebRequest, и все пошло.
Ответ написан
Комментировать
google webclient cookies
Можно и достаточно легко.
Ответ написан
Комментировать
newross
@newross
Product owner
Это легко сделать с помощью HttpClient, используя CookieContainer
var cookieContainer = new CookieContainer();
           _handler = new HttpClientHandler {CookieContainer = cookieContainer};
           _client = new HttpClient(_handler);

После авторизации или любого другого запроса можно сохранить куки
private void SaveCookie()
        {
            var cookies = _handler.CookieContainer.GetCookies(new Uri(BaseUrl));
            var cookie = cookies["PHPSESSID"];
            using (var writer = new StreamWriter(_cookieFile))
            {
                writer.Write(cookie.ToJson());
            }
        }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы