Когда я использую HttpWebRequest
в .NET, его CookieContainer объект не содержит куки, которые имеют ,
(запятая) в них - например, если печенье выглядит следующим образом:Parser Cookie .NET (в CookieContainer) нарушается
guest_id=v1%3A142425134212809164; Domain=.twitter.com; Path=/; Expires=Fri, 17-Feb-2017 09:22:22 UTC
CookieContainer этого запроса не будет содержать этот файл cookie, поскольку он содержит запятую внутри него (в параметре Expires). С другой стороны, когда файлы cookie не содержат в них запятых, объект CookieContainer получает их правильно.
Есть ли обходной путь для этой проблемы?
Я тоже заметил эту «проблему» и никогда не удосужился выяснить, почему это происходит. Это достаточно просто исправить, изменив формат даты. Быстрое решение - удалить часть имени даты (Fri) и отправить 'guest_id = v1% 3A142425134212809164; Домен = .twitter.com; Path = /; Expires = 17-Feb-2017 09:22:22 UTC' вместо этого. –
@JoeyJoeJoeJrShabadoo, большое спасибо! Не могли бы вы предоставить какой-то код о том, как правильно получить cookie с параметром Expires в CookieContainer? Я не могу просто отправлять эти же данные снова и снова, потому что значение cookie 'guest_id' генерируется случайным образом при каждом посещении Twitter. – BlueRay101
Nevermind, я успешно добавил файл cookie без параметра Expires в глобальный объект CookieContainer, как вы сказали (все запросы используют тот же CookieContainer). Вот как я это сделал: 'AllCookies.Add (новое Cookie (" guest_id "," v1% 3A142425134212809164 ","/"," .twitter.com "));'. Теперь запросы отправляют куки-файлы, которые я добавил, и они делают это просто отлично - программа работает безупречно! В очередной раз благодарим за помощь :) – BlueRay101