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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2012, 00:26   #1
STALERUM
 
Регистрация: 05.08.2012
Сообщений: 9
Восклицание ошибка при запросе http 1.1 302 moved temporarily

добрый день,форумчане!
я новичок, просьба не пинать.
Пишу бота для olike.ru и наткнулся на проблему:
после выполнения 4-го запроса выскакивает окошко с сообщением об ошибке(http 1.1 302 moved temporarily)
Не понимаю почему это происходит, а точнее не знаю что с этим делать.
Ниже кусок кода:
Код:
begin
/////создаем и настраиваим компоненты
cookie:=Tidcookiemanager.Create(self);
http := TIdHTTP.Create(self);
http.CookieManager:=cookie;
//freeze:=TIdAntiFreeze.Create(self);
http.AllowCookies := false;
http.HandleRedirects := False;
http.Request.Connection:='keep-alive';
http.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1';
try
////авторизовываемся но нас должно редеректить так как http.HandleRedirects := False;
link:=HTTP.get('http://vk.com/login.php?email='+l+'&pass='+p);
except
    if (http.ResponseCode=302) then begin ////проверяем если редирект тогда
      ////парсим кукусы
      uri := TIdUri.Create('http://vk.com');
      c := http.Response.RawHeaders.Text;
      i := Pos('remixlang', c) + 10;
      remixlang := Copy(c, i, length(c));
      remixlang := Copy(remixlang, 1, pos(';',remixlang)-1);
      i := Pos('remixchk', c) + 9;
      remixchk := Copy(c, i, length(c));
      remixchk := Copy(remixchk, 1, pos(';',remixchk)-1);
      i := Pos('remixsid', c) + 9;
      remixsid := Copy(c, i, length(c));
      remixsid := Copy(remixsid, 1, pos(';',remixsid)-1);
      ////добаляем их
      http.Request.CustomHeaders.Text := 'Cookie: remixlang='+remixlang+'; remixchk='+remixchk +'; remixsid='+remixsid;
      http.CookieManager.AddServerCookie('remixlang='+remixlang+'remixchk='+remixchk+'; remixsid='+remixsid,uri);
      link:=http.Get('http://vk.com/widget_auth.php?app=2924245&width=200px&url=http://olikefriends004.ru/olikelogin.php');
    hash:=copy(link,pos('window.authHash = ',link)+length('window.authHash = '),length(link));
    hash:=copy(hash,1,pos(';',hash)-1);
    Delete(hash,1,1);
    Delete(hash,length(hash),1);
    first_name:=copy(link,pos('target="_blank">',link)+length('target="_blank">'),length(link));
    first_name:=copy(first_name,1,pos(' ',first_name)-1);
    last_name:=copy(link,pos(first_name+' ',link)+length(first_name+' '),length(link));
    last_name:=copy(last_name,1,pos('</a>',last_name)-1);
    end;
    end;


     PostData:=TStringList.Create;
     PostData.Clear;
     PostData.Add('act=a_auth_user');
     PostData.Add('app=2924245');
     PostData.Add('hash='+hash);
     PostData.Add('url=http://olikefriends004.ru/vkform.php');
     link:=http.Post('http://vk.com/widget_auth.php',PostData);
     PostData.Free;

     uid:=copy(link,pos('[',link)+length('['),length(link));
     uid:=copy(uid,1,pos(',',uid)-1);
     hash:=copy(link,pos('"},"',link)+length('"},"'),length(link));
     hash:=copy(hash,1,pos('"]',hash)-1);

   // Delete(hash,1,1);
   // Delete(hash,length(hash),1);
   memo1.Lines.Add(uid);
   memo1.Lines.Add(hash);
   {////парсим кукусы
      uri := TIdUri.Create(link);
      c := http.Response.RawHeaders.Text;
      i := Pos('cDRGN', c) + 3;
      cDRGN := Copy(c, i, length(c));
      cDRGN := Copy(cDRGN, 1, pos(';',cDRGN)-1);}
      memo1.Lines.Add(cDRGN);
      ////парсим кукусы
      ////добаляем их
      http.Request.CustomHeaders.Text := 'Cookie: remixlang='+remixlang+'; remixchk='+remixchk +'; remixsid='+remixsid{+' ;remixreg_sid='+remixreg_sid};
      http.CookieManager.AddServerCookie('remixlang='+remixlang+'remixchk='+remixchk+'; remixsid='+remixsid{+' ;remixreg_sid='+remixreg_sid},uri);
  
      link:=http.get('http://olikefriends004.ru/olikelogin.php?uid='+uid+'&first_name='+first_name+'&last_name='
+last_name+'&photo=http://vk.com/images/camera_a.gif&photo_rec=http://vk.com/images/camera_c.gif&hash='+hash);
       // Здесь вылетает ошибка
      link:=http.Get('http://olike.ru/login.php?uid='+uid+'&hash='+hash+'&');

Даже если я ставлю гет запрос в условие
if (http.ResponseCode=302) then begin
блбалаба
end;
то условие опять таки не выполняется. поэтому я не понимаю что сдесь делать. подскажите пожалуйста

Последний раз редактировалось Stilet; 30.08.2012 в 10:10.
STALERUM вне форума Ответить с цитированием
Старый 30.08.2012, 10:56   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
http.HandleRedirects := False;
здесь вы говорите что будете обрабатывать редиректы сами.
а это событие OnRedirect
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.08.2012, 11:31   #3
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Код:
begin
/////создаем и настраиваим компоненты
cookie:=Tidcookiemanager.Create(self);
http := TIdHTTP.Create(self);
http.CookieManager:=cookie;
//freeze:=TIdAntiFreeze.Create(self);
http.AllowCookies := false;
http.HandleRedirects := False;
http.Request.Connection:='keep-alive';
http.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0) Gecko/20100101 Firefox/13.0.1';
try
////авторизовываемся но нас должно редеректить так как http.HandleRedirects := False;
link:=HTTP.get('http://vk.com/login.php?email='+l+'&pass='+p);
except
    if (http.ResponseCode=302) then begin ////проверяем если редирект тогда
      ////парсим кукусы
      uri := TIdUri.Create('http://vk.com');
      c := http.Response.RawHeaders.Text;
      i := Pos('remixlang', c) + 10;
      remixlang := Copy(c, i, length(c));
      remixlang := Copy(remixlang, 1, pos(';',remixlang)-1);
      i := Pos('remixchk', c) + 9;
      remixchk := Copy(c, i, length(c));
      remixchk := Copy(remixchk, 1, pos(';',remixchk)-1);
      i := Pos('remixsid', c) + 9;
      remixsid := Copy(c, i, length(c));
      remixsid := Copy(remixsid, 1, pos(';',remixsid)-1);
      ////добаляем их
      http.Request.CustomHeaders.Text := 'Cookie: remixlang='+remixlang+'; remixchk='+remixchk +'; remixsid='+remixsid;
      http.CookieManager.AddServerCookie('remixlang='+remixlang+'remixchk='+remixchk+'; remixsid='+remixsid,uri);
      link:=http.Get('http://vk.com/widget_auth.php?app=2924245&width=200px&url=http://olikefriends004.ru/olikelogin.php');
    hash:=copy(link,pos('window.authHash = ',link)+length('window.authHash = '),length(link));
    hash:=copy(hash,1,pos(';',hash)-1);
    Delete(hash,1,1);
    Delete(hash,length(hash),1);
    first_name:=copy(link,pos('target="_blank">',link)+length('target="_blank">'),length(link));
    first_name:=copy(first_name,1,pos(' ',first_name)-1);
    last_name:=copy(link,pos(first_name+' ',link)+length(first_name+' '),length(link));
    last_name:=copy(last_name,1,pos('</a>',last_name)-1);
    end;
    end;


     PostData:=TStringList.Create;
     PostData.Clear;
     PostData.Add('act=a_auth_user');
     PostData.Add('app=2924245');
     PostData.Add('hash='+hash);
     PostData.Add('url=http://olikefriends004.ru/vkform.php');
     link:=http.Post('http://vk.com/widget_auth.php',PostData);
     PostData.Free;

     uid:=copy(link,pos('[',link)+length('['),length(link));
     uid:=copy(uid,1,pos(',',uid)-1);
     hash:=copy(link,pos('"},"',link)+length('"},"'),length(link));
     hash:=copy(hash,1,pos('"]',hash)-1);

   // Delete(hash,1,1);
   // Delete(hash,length(hash),1);
   memo1.Lines.Add(uid);
   memo1.Lines.Add(hash);
   {////парсим кукусы
      uri := TIdUri.Create(link);
      c := http.Response.RawHeaders.Text;
      i := Pos('cDRGN', c) + 3;
      cDRGN := Copy(c, i, length(c));
      cDRGN := Copy(cDRGN, 1, pos(';',cDRGN)-1);}
      memo1.Lines.Add(cDRGN);
      ////парсим кукусы
      ////добаляем их
      http.Request.CustomHeaders.Text := 'Cookie: remixlang='+remixlang+'; remixchk='+remixchk +'; remixsid='+remixsid{+' ;remixreg_sid='+remixreg_sid};
      http.CookieManager.AddServerCookie('remixlang='+remixlang+'remixchk='+remixchk+'; remixsid='+remixsid{+' ;remixreg_sid='+remixreg_sid},uri);
  
      link:=http.get('http://olikefriends004.ru/olikelogin.php?uid='+uid+'&first_name='+first_name+'&last_name='
+last_name+'&photo=http://vk.com/images/camera_a.gif&photo_rec=http://vk.com/images/camera_c.gif&hash='+hash);
       // Здесь вылетает ошибка
http.HandleRedirects := true;
      link:=http.Get('http://olike.ru/login.php?uid='+uid+'&hash='+hash+'&');
так вроде не?
Кольша вне форума Ответить с цитированием
Старый 30.08.2012, 13:13   #4
STALERUM
 
Регистрация: 05.08.2012
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
здесь вы говорите что будете обрабатывать редиректы сами.
а это событие OnRedirect
не совсем понял что с этим делать
STALERUM вне форума Ответить с цитированием
Старый 30.08.2012, 13:14   #5
STALERUM
 
Регистрация: 05.08.2012
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Кольша Посмотреть сообщение
так вроде не?
так пробовал -не работает
STALERUM вне форума Ответить с цитированием
Старый 30.08.2012, 13:23   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

STALERUM, HandleREdirections = TRUE и все.
Человек_Борща вне форума Ответить с цитированием
Старый 31.08.2012, 13:11   #7
N0iD
Пользователь
 
Аватар для N0iD
 
Регистрация: 05.05.2010
Сообщений: 50
По умолчанию

Я бегло пробежался по коду, не понял что такое "link", ну да ладно, пробуй.
Цитата:
try
link:=http.Get('http://olike.ru/login.php?uid='+uid+'&hash='+hash+' &');
except
HTTP.GET(HTTP.Response.Location);
end;
Попробуй и отпишись)
N0iD вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка HTTP/1.1 301 Moved Permanently alkador Общие вопросы Delphi 1 14.04.2012 18:13
Авторизация на mail.ru. Ошибка HTTP/1.1 302 OK. webber9989 Работа с сетью в Delphi 3 28.06.2011 22:10
Ошибка HTTP/1.1 302 Found dharma Работа с сетью в Delphi 5 09.01.2011 17:18
ошибка http/1.1 302 found pesi Работа с сетью в Delphi 2 10.09.2009 20:25
HTTP/1.1 302 Found Crivel Работа с сетью в Delphi 3 24.04.2009 19:15