Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как создать новый RESTRequest и передать ему полученные ранее куки


notricky

Вопрос

Собственно вопрос в том, что после авторизации клиент получает куку с хешем, который используется для подтверждения залогинености пользователя.

В XE7 мне не удалось добавить полученную куку в новый запрос, отчего отправлять асинхронные запросы оказалось невозможным.

В итоге вопрос: как добавить куки к новому запросу и нужен ли отдельный компонент клиента?

Изменено пользователем Andrey Efimov
Изменён заголовок, объединены темы
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Хочу сюда подписаться.

Только у меня дополнительный и безрадостный вопрос: как собственно создать новый RESTRequest и передать ему полученные ранее куки, чтобы они передались в запрос и отработали?

Ссылка на комментарий
  • 0

[XE8]

Хочу простую и банальную вещь: много запросов, но авторизация (через куки) только один раз. Как это сделать?

То есть как подставлять в новые запросы полученные ранее куки?

 

Я посмотрел код и пришёл в ужас. Я не понимаю, почему закомменчено

unit REST.HttpClient;

...

procedure TRESTHTTP.AddServerCookie(const ACookie, AURL: string);
begin
  if FHTTPClient.AllowCookies then
//    FHTTPClient.CookieManager.AddServerCookie(ACookie, AURL);
    ;       
end;

Почему не создается КукиМанагер (он nil).

Почему все так сложно и через известное место? :(((( Ну и что с этим делать?

Почему прямое AddCookie не даёт ожидаемого эффекта?

Если проще забить, то как перейти на TNetHttpClient/Request (тут все с куками хорошо, но плохо с компрессией), если нужно поддерживать GZIP на Windows/Android?

Изменено пользователем notricky
Ссылка на комментарий
  • 0
  • Модераторы
3 часа назад, notricky сказал:

))))

В TREST*** ? ;)

каков вопрос - таков ответ.

Раскрывайте вопрос полностью, с описанием версии студии, использованных компонентов

UPDATE:

  RESTRequest1.AddAuthParameter('name','value',TRESTRequestParameterKind.pkCOOKIE);

UPDATE2:

можно использовать альтернативный вариант, куда можно передать куки (как из примера выше)

Ссылка на комментарий
  • 0
  • Модераторы

ТС'у - не надо плодить и поднимать старые темы с одним и тем же вопросом! Все три темы объединил.

17 минут назад, ZuBy сказал:

каков вопрос - таков ответ.

Раскрывайте вопрос полностью, с описанием версии студии, использованных компонентов

Выбранный ТС'ом раздел как бы намекал... или ты уже перенёс тему?(вопрос более не актуален, посмотрел историю модерации)

Ссылка на комментарий
  • 0
В 22.10.2016 в 09:34, ZuBy сказал:

каков вопрос - таков ответ.

Раскрывайте вопрос полностью, с описанием версии студии, использованных компонентов

Вопрос был полностью раскрыт. Даже больше. Он идет непосредственно перед ответом. а то, что слили все в одну тему... так что поделать.

В 22.10.2016 в 09:34, ZuBy сказал:

UPDATE:


  RESTRequest1.AddAuthParameter('name','value',TRESTRequestParameterKind.pkCOOKIE);

 

Логику я не понимаю, но попробую. ОТпишусь.

Ссылка на комментарий
  • 0

Не работает этот вариант с AddAuthParameter.

Можете объяснить почему вы решили, что это должно сработать? Очень интересно. Дату, к примеру, не указать явным образом. В каком формате нужно передать Value?

Ссылка на комментарий
  • 0

Друзья, честно, объясните, если знаете. Почему в XE8 не работают куки?

Даже если использовать AddAuthParameter , то когда доходит до TRestRequest.Execute, попадает в DoApplyCookieParams далее в цикле идет поиск куков и делается FClient.SetCookie внутри которого идет обращение к HTTPClient.AddServerCookie внутри которого только проверка на AllowCookies и все...

Кто-нить может мне пояснить, как это вообще работает в таком случае?

Ссылка на комментарий
  • 0

С другой стороны, может быть кто-то предложит хакнуть TRestClient и достать таки из него FHttpClient поле. Может есть изящное решение. Тогда вопрос будет закрыт.

Ссылка на комментарий
  • 0
  • Модераторы

Я уже выкладывал выше альтернативу TRestClient, там можно работать THTTPClient, пример есть на гитхабе

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...