TL; DR краткий обзор других ответов:
Типы, которые вы расширяете, подвержены унаследованным типам, но самотипы не являются
, например: class Cow { this: FourStomachs }
позволяет использовать методы, доступные только жвачным, например, digestGrass
. Черты, которые расширяют корову, однако, не будут иметь таких привилегий. С другой стороны, class Cow extends FourStomachs
откроет digestGrass
любому, кто extends Cow
.
self-типы допускают циклические зависимости, расширение других типов не
Платформа .NET будет управлять файлами cookie за вас. Вам не нужно беспокоиться о том, чтобы извлекать информацию из заголовков файлов cookie или добавлять заголовки файлов cookie в свои запросы.
Чтобы сохранить и отправить идентификатор сеанса, используйте Cookie
и CookieContainer
для их хранения, а затем убедитесь, что вы отправляете файлы cookie с каждым запросом.
В следующем примере показано, как это сделать. CookieContainer, « cookieJar
», может совместно использоваться несколькими доменами и запросами. Как только вы добавите его к объекту запроса, ссылка на него также будет добавлена к объекту ответа, когда ответ будет возвращен.
CookieContainer cookieJar = new CookieContainer();
var request = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com");
request.CookieContainer = cookieJar;
var response = request.GetResponse();
foreach (Cookie c in cookieJar.GetCookies(request.RequestUri))
{
Console.WriteLine("Cookie['" + c.Name + "']: " + c.Value);
}
Результатом этого кода будет:
Cookie ['PREF']: ID = 59e9a22a8cac2435: TM = 1246226400: LM = 1246226400: S = tvWTnbBhK4N7Tlpu
Ответ Дэна Герберта действительно помог мне. Я ценю вашу помощь.
Просто хочу написать о моем использовании - надеюсь, это поможет кому-нибудь в какой-то момент. Мое требование заключается в том, чтобы я отправлял куки-файлы обратно с первого http ответа на второй http запрос.
1:
CookieContainer cookieJar = new CookieContainer();
request.CookieContainer = cookieJar;
....
CookieCollection setCookies = cookieJar.GetCookies(request.RequestUri);
2:
CookieContainer cc = new CookieContainer();
cc.Add(setCookies);
request.CookieContainer = cc;
HUL, я могу быть неправильным, но от того, что я наблюдаю в последнее время
cookie из первого ответа, не включает в себя файлы cookie, которые приходят в заголовке (например, Некоторые идентификатор сеанса ...) В случае состояния 302 (перенаправления)
, если autofollowredirect настроен на true, то установленное cookie обработано, и последующий запрос, который выполняется автоматически, будет включать эти куки, определенные Установите cookie на первый звонок
Если autofollowredirect установлено значение false, то первый запрос не получает файлы cookie, расположенные на Set Cookie, и я думаю, и это также мой квест, если кто-то знает, что единственный способ впоследствии Есть те печенья в следующем запросе, анализируют набор файлов cookie?
У меня такая же проблема (с amazon). Я использую следующий regexp:
string regexp = "(?<name>[^=]+)=(?<val>[^;]+)[^,]+,?";);
MatchCollection myMatchCollection = Regex.Matches(cookiesStr, regexp);
foreach (Match myMatch in myMatchCollection)
{
string cookieName = myMatch.Groups["name"].ToString();
string cookieVal = myMatch.Groups["val"].ToString();
Cookie cookie = new Cookie(cookieName, cookieVal);
cookies.Add(cookie);
}
Обратите внимание, что меня волнует только имя/значение cookie...
удачи Elia