Как проанализировать HttpWebResponse. Заголовки. Ключи для возвращенного идентификатора сессии Cookie Набора

TL; DR краткий обзор других ответов:

  • Типы, которые вы расширяете, подвержены унаследованным типам, но самотипы не являются

    , например: class Cow { this: FourStomachs } позволяет использовать методы, доступные только жвачным, например, digestGrass. Черты, которые расширяют корову, однако, не будут иметь таких привилегий. С другой стороны, class Cow extends FourStomachs откроет digestGrass любому, кто extends Cow.

  • self-типы допускают циклические зависимости, расширение других типов не

24
задан harriyott 18 October 2011 в 10:12
поделиться

4 ответа

Платформа .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

56
ответ дан 28 November 2019 в 22:30
поделиться

Ответ Дэна Герберта действительно помог мне. Я ценю вашу помощь.

Просто хочу написать о моем использовании - надеюсь, это поможет кому-нибудь в какой-то момент. Мое требование заключается в том, чтобы я отправлял куки-файлы обратно с первого 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;
8
ответ дан 28 November 2019 в 22:30
поделиться

HUL, я могу быть неправильным, но от того, что я наблюдаю в последнее время

cookie из первого ответа, не включает в себя файлы cookie, которые приходят в заголовке (например, Некоторые идентификатор сеанса ...) В случае состояния 302 (перенаправления)

, если autofollowredirect настроен на true, то установленное cookie обработано, и последующий запрос, который выполняется автоматически, будет включать эти куки, определенные Установите cookie на первый звонок

Если autofollowredirect установлено значение false, то первый запрос не получает файлы cookie, расположенные на Set Cookie, и я думаю, и это также мой квест, если кто-то знает, что единственный способ впоследствии Есть те печенья в следующем запросе, анализируют набор файлов cookie?

1
ответ дан 28 November 2019 в 22:30
поделиться

У меня такая же проблема (с 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

5
ответ дан 28 November 2019 в 22:30
поделиться
Другие вопросы по тегам:

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