Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обработка исключительных ситуаций indy в потоке [D7]


Vatokat ©   (2010-01-28 23:55:00) 

Добавил в свою программу потоки и вознакла следующая проблема:
В потоке создаю IdHTTP и отправляю POST запрос к url, но дело в том, что на указаном сайте 302 редирект, я отлавливаю это, получаю куда редиректит и делаю запрос снова, без потоков всё было как надо, но после добавления исключительная ситуация на редирект почему-то не обрабатывается и вознакает сообщение редиректе, после этого поток убивается.

Вот кусок кода

IdHTTP1.Post(' http://myurl.ru/', LogInfo);
except on e : EIdHTTPProtocolException do
  Begin
    if e.ErrorCode = 302 then
      begin
         twourl:=idhttp1.Response.Location;
         try
          IdHTTP1.Get(twourl);
         except
           on g : EIDHttpProtocolException do
           Begin
             if g.ErrorCode = 302 then
             begin
               threeurl:=URLDecode(IdHTTP1.Response.Location);
             end;
           End;
           on EIdException do;
         end;

      end else Synchronize(SetProgress);
  end;


Почему может не обрабатываться исключительная ситуация?


Vatokat   (2010-01-29 20:22:00) [1]

Сделал через получение данных в onredirect, всё ок, всем спасибо.
Если кому-то надо будет, то не забывайте, что после редиректа indy обращается к странице таким же методом, как и было указанно в начале. По этому устанавливаем VMethod на онредирект на нужный метод.


Медвежонок Пятачок   (2010-01-29 19:26:00) [2]

тем более, что код возврата доступен, адрес редиректа доступен.
накой тебе исключение для того, что бы извлечь эти данные и понять, что нажо делать редирект? (если уж ты решил самостоятельно  обрабатывать редирект)


Медвежонок Пятачок   (2010-01-29 19:21:00) [3]

Там 2 редиректа

хоть три. в чем проблема-то?


Vatokat   (2010-01-29 19:06:00) [4]


> DVM

Видимо прийдётся делать как то так, только почему всё таки внутри потока не срабатывает исключение?


DVM   (2010-01-29 18:59:00) [5]


> Vatokat   (28.01.10 23:55) 

на мой взгляд правильно делать так: получил редирект - делай новый поток, старый умирает самопроизвольно и все сначала и так далее хоть 1000 редиректов.


Vatokat   (2010-01-29 17:14:00) [6]

Там 2 редиректа и даже если менять post запрос на get на событие onredirect, то срабатывает не корректно.


Медвежонок Пятачок   (2010-01-29 10:11:00) [7]

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


Vatokat   (2010-01-29 00:53:00) [8]

Я уже думал об этом, потому что другие исключения нормально работают.
А как сделать что бы было?


Anatoly Podgoretsky   (2010-01-29 00:34:00) [9]

> Vatokat  (28.01.2010 23:55:00)  [0]

Потому что исключения нет.


Наверх

Титульная страница Поиск, карта сайта Написать письмо