Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Как проверить произошла ли авторизация запрос Post


Автор: BlueAlien 17.5.2015, 19:32
Доброе время суток. 
У меня есть код, отправляющий запрос Post на сайт: 
Код

var
S : TStringList;
begin
S := TStringList.Create();
S.Add('username');
S.Add('password');
IdHTTP1.Post('URL', S, R);
S.Free;
end;

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

Автор: Illusion Dolphin 17.5.2015, 20:03
Цитата

мне хотелось бы знать, как тут проверить, прошла ли авторизация как надо?

В общем случае никак. В частных с помощью парсинга ответа и поиска каких-либо элементов, которые доступны только залогиненому пользователю. 

Автор: BlueAlien 17.5.2015, 21:13
Цитата(Illusion Dolphin @  17.5.2015,  20:03 Найти цитируемый пост)
В общем случае никак. В частных с помощью парсинга ответа и поиска каких-либо элементов, которые доступны только залогиненому пользователю. 

Без флуда никак, да? 

Автор: Illusion Dolphin 18.5.2015, 09:45
http://tools.ietf.org/html/rfc2616#section-9.5

Автор: Skorikoff 5.9.2015, 09:38
В полученом ответе от сервера после POST запроса (исходный код HTML страницы)  нужно спарсить значение которое свидетельствует о успешной или проваленой авторизации. Чаще всего это "logout". Но не факт ищите ключевик в исходном коде сайта.
Примерно будет выглядеть так

Indy не пользовался, могут быть ошибки. Сижу на Synapse

Код

1. Отправляем POST запрос
2. Выгружаем полученный код в StringList или в Memo или куда вашей душе угодно
3. В этом тексте ище ключевое слово которое свидетельствует о успешной или проваленой авторизации

if Pos('logout',стринглист или мемо.Text) <> 0 then // т.е мы ищем слово logout  в стринглисте (куда мы выгрузили HTML страничку после пост запроса)
    begin //если слово найдено то выводим сообщение "успешно!"
ShowMessage('удачно!');
 end
 else // ну а если не нашли то выводим "провалено!"
 begin
ShowMessage('провалено!');
 end;


Все довольно просто. Удачи.

Автор: HoZeY 16.9.2015, 22:42
проверка авторизации ВК

Код

function TForm1.Log(page: string): boolean;
begin
  if Pos('act=logout', page) > 0 then
  begin
    StatusBar1.Panels.Items[3].Text := 'ОК! ';

    result := true;

  end
  else
    StatusBar1.Panels.Items[3].Text := 'Не авторизированы!';
  result := false;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)