Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2012, 15:53   #1
Afftar
Пользователь
 
Регистрация: 02.06.2009
Сообщений: 30
По умолчанию Правильный редирект в синапсе.

Здравствуйте, для успешной авторизации на сайте используется цепочка из нескольких редиректов.
Редирект обрабатываю, вытаскивая из заголовка Location.
Итого получается следующая конструкция:

Код:
http.HTTPMethod('get','https://сайт.ру');
      s:=GetLocation(http.Headers);
      http.Headers.Clear;

      http.HTTPMethod('get',s);
      s:=GetLocation(http.Headers);
      http.Headers.Clear;

      http.HTTPMethod('get',s);
      s:=GetLocation(http.Headers);
      http.Headers.Clear;

      http.HTTPMethod('get',s);
      s:=GetLocation(http.Headers);
      http.Headers.Clear;

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

И еще, дабы не плодить темы, интересует вопрос:

Создаю я в синапсе поток
Код:
stream:=TStringStream.Create('');
и когда мне нужно извлечь данные из страницы, я сохраняю код страницы в поток, после чего передаю его для обработки. Вопрос в том, как очистить поток от предыдущих записей?
Afftar вне форума Ответить с цитированием
Старый 08.11.2012, 16:43   #2
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Мой код авторизации вконтакте палгиатете?
Не проще использовать цикл?
Код:
///запрос
while http.resultcode=302 do
begin

      s:=GetLocation(http.Headers);
 http.HTTPMethod('get',s);
      http.Headers.Clear;
http.document.clear;
end;
Кольша вне форума Ответить с цитированием
Старый 08.11.2012, 20:00   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

У Tstrings в старших версиях Delphi есть параметр NameValueSeparator оторый сводит получение нужного значения из Headers к такому виду:
Код:
fHTTP.Headers.NameValueSeparator:=':';
my302Location:=fHTTP.Headers.Values['Location'];
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Редирект danil123 Общие вопросы Delphi 12 12.07.2012 08:34
Редирект с переменной Rost93 JavaScript, Ajax 4 23.06.2012 08:21
Автоматический редирект маГГ85 HTML и CSS 1 07.04.2012 09:17
Редирект 4ok JavaScript, Ajax 2 26.07.2011 15:47
РЕдирект в idHTTP beemoto Работа с сетью в Delphi 13 12.04.2009 13:08