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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2011, 11:27   #1
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
Вопрос Не могу найти ошибку в коде при авторизации вконтакте

я пытаюсь авторизоваться вконтакте!

Код:
procedure TForm1.Button1Click(Sender: TObject);
var info,list: TStringList;
begin
  idhttp1.CookieManager:=IdCookieManager1;
  idHTTP1.HandleRedirects:= True;
  info:=TStringList.Create;
try
  list:=TStringList.Create;
  info.Add('email='+edit1.Text);
  info.Add('pass='+edit2.Text);
  info.Add('act=login');
  info.Add('expire=');
  info.Add('from_host=vk.com');
  info.Add('q=1');
  info.Add('al_frame=1');
  info.Add('captcha_sid=');
  info.Add('captcha_key=');
  list.Text:=idhttp1.Post('http://login.vk.com/?act=login',info);
  memo1.Text:=list.Text;
if Pos('Online',list.Text)>0 then
 label1.Caption:='Online'
 else
 label1.Caption:='Offline';
finally
 info.Free;
 list.Free;

end;
При компиляции ошибок нет, а как нажимаю кнопку и сразу вылетает ошибка "OIShandler is no value vailid"

Я idHTTP1.HandleRedirects:= false ставил , а там другая ошибка "HTTP/1.1 302 found"

Скажите пожалуйста в чем у меня ошибка!

Знаю что на форуме подобных тем много, но я хотел бы узнать где у меня ошибка!

спасибо...
Мудр тот, кто знает нужное, а не многое.


Последний раз редактировалось Arsenx777; 05.07.2011 в 11:30.
Arsenx777 вне форума Ответить с цитированием
Старый 05.07.2011, 11:57   #2
Mifody
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 215
По умолчанию

А про ошибку почитать пробовали? Что это за ответ такой страшный "302". Похоже нет.
HTTP ответ 302 говорит что идет редирект на другую страницу.
Насчет ошибки "OIShandler is no value vailid" - что к IdHTTP подключено?
Помог с вопросом - тыркаем в весы, Вам не сложно, а мне приятно
Mifody вне форума Ответить с цитированием
Старый 05.07.2011, 12:10   #3
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию

а как исправить? все что смог сделал...
Мудр тот, кто знает нужное, а не многое.

Arsenx777 вне форума Ответить с цитированием
Старый 05.07.2011, 16:45   #4
Mifody
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 215
По умолчанию

ааа, блин, долбаная индя, я и забыл про этот баг , короче. У инди (точно не скажу про версии, в последних может и исправили), есть баг обработки редиректа. Есди перед этим выполнил POST запрос и идет редирект, то он то же обрабатывается POST запросом. Метод лечения (правда не всегда спасает):
1. idHTTP1.HandleRedirects:= True; - это и должно быть, иначе редирект не обработается (будет твоя ошибка 302)
2. у компоненты idHTTP создаеш обработку события OnRedirect, в методе пишеш "VMethod := hmGet;"
Дальше уже возись с продолжением написания авторизации

З.Ы. Сам уже давно от индей отказался из-за их багов.
Помог с вопросом - тыркаем в весы, Вам не сложно, а мне приятно
Mifody вне форума Ответить с цитированием
Старый 05.07.2011, 17:04   #5
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Код:
var PageProfile:string; 
      error:boolean; 
begin 
 IdHTTP1.AllowCookies:=true; 
 IdHTTP1.HandleRedirects:=true; 
 error:=false; 
 try 
  PageProfile:=IdHTTP1.Get('http://login.vk.com/?act=login&success_url=&fail_url=&try_to_login=1&vk=&al_test=3&email=ваш_логин&pass=ваш_пароль&expire'); 
 except 
  error:=true; 
 end; 

 if not(error) and (Pos('"logout_frame"', PageProfile)<>0) then 
  Memo1.Lines.Add('Авторизация удалась') 
 else 
  Memo1.Lines.Add('Авторизация не удалась'); 

end;
Voody вне форума Ответить с цитированием
Старый 05.07.2011, 18:57   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Сообщение от Arsenx777 Посмотреть сообщение
я пытаюсь авторизоваться вконтакте!

Код:
procedure TForm1.Button1Click(Sender: TObject);
var info,list: TStringList;
begin
  idhttp1.CookieManager:=IdCookieManager1;
  idHTTP1.HandleRedirects:= True;
  info:=TStringList.Create;
try
  list:=TStringList.Create;
  info.Add('email='+edit1.Text);
  info.Add('pass='+edit2.Text);
  info.Add('act=login');
  info.Add('expire=');
  info.Add('from_host=vk.com');
  info.Add('q=1');
  info.Add('al_frame=1');
  info.Add('captcha_sid=');
  info.Add('captcha_key=');
  list.Text:=idhttp1.Post('http://login.vk.com/?act=login',info);
  memo1.Text:=list.Text;
if Pos('Online',list.Text)>0 then
 label1.Caption:='Online'
 else
 label1.Caption:='Offline';
finally
 info.Free;
 list.Free;

end;
При компиляции ошибок нет, а как нажимаю кнопку и сразу вылетает ошибка "OIShandler is no value vailid"

Я idHTTP1.HandleRedirects:= false ставил , а там другая ошибка "HTTP/1.1 302 found"

Скажите пожалуйста в чем у меня ошибка!

Знаю что на форуме подобных тем много, но я хотел бы узнать где у меня ошибка!

спасибо...

поставьте бряк на начале функции... и отладчиком пройдитесь.
И вы не все параметры посылаете..

Код HTML:
  <form method="POST" name="login" id="quick_login_form" action="http://login.vk.com/?act=login" onsubmit="if (vklogin) {return true} else {quick_login();return false;}">
    <input type="hidden" name="act" value="login" />
    <input type="hidden" name="q" value="1" />
    <input type="hidden" name="al_frame" value="1" />
    <input type="hidden" name="expire" id="quick_expire_input" value="" />
    <input type="hidden" name="captcha_sid" id="quick_captcha_sid" value="" />
    <input type="hidden" name="captcha_key" id="quick_captcha_key" value="" />
    <input type="hidden" name="from_host" value="vkontakte.ru" />
    <input type="hidden" name="ip_h" value="4c134df1bee757be47" />
    <div class="label">E-mail или Логин:</div>
    <div class="labeled"><input type="text" name="email" class="text" onfocus="show('quick_expire')" id="quick_email" /></div>
    <div class="label">Пароль:</div>
    <div class="labeled"><input type="password" name="pass" class="text" onfocus="show('quick_expire')" id="quick_pass" /></div>
    <div class="checkbox" id="quick_expire" onclick="checkbox(this);ge('quick_expire_input').value=isChecked(this)?1:'';"><div></div>Чужой компьютер</div>
    <input type="submit" class="submit" />
  </form>
Далее для начала взяли бы какой-нибудь сниффер и посмотрели бы, что браузер шлёт на сайт....
Человек_Борща вне форума Ответить с цитированием
Старый 05.07.2011, 21:24   #7
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
поставьте бряк на начале функции... и отладчиком пройдитесь.
И вы не все параметры посылаете..
Что за 'бряк'?


Можно это все вообще сделать через сокеты?
Мудр тот, кто знает нужное, а не многое.

Arsenx777 вне форума Ответить с цитированием
Старый 05.07.2011, 21:48   #8
Voody
Форумчанин
 
Регистрация: 22.06.2009
Сообщений: 310
По умолчанию

Я вам дал готовый простой код, который сам Дуров советует)
Voody вне форума Ответить с цитированием
Старый 05.07.2011, 22:20   #9
Arsenx777
Delphi, c++, php
Форумчанин
 
Аватар для Arsenx777
 
Регистрация: 14.03.2011
Сообщений: 288
По умолчанию

спасибо! кто можно обновить indy, архив с компонентами у меня усть, а что дальше делать не знаю
Мудр тот, кто знает нужное, а не многое.

Arsenx777 вне форума Ответить с цитированием
Старый 06.07.2011, 09:14   #10
Mifody
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 215
По умолчанию

гуглепоиска вам в помощь , ну или яндекс
на самом деле полно версий статьи валяется как обновить корректно индю, даже и лениво искать. Тем более что я не обновлялся и не пользуюсь ими
Помог с вопросом - тыркаем в весы, Вам не сложно, а мне приятно
Mifody вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, строки. Не могу найти ошибку в коде. Liam_ Помощь студентам 6 11.05.2011 19:29
Не могу найти ошибку в коде написанном на FASM Devil21RUS Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 12.12.2010 04:52
не могу найти ошибку в коде pavelstraut Общие вопросы C/C++ 5 24.07.2009 23:20
Не могу найти ошибку в скрипте авторизации Revival001 PHP 8 26.06.2009 10:57
Не могу найти ошибку в коде! Natasha666 Помощь студентам 1 20.05.2009 09:27