Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

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

 
Vatokat   (2010-01-28 23:55) [0]

Добавил в свою программу потоки и вознакла следующая проблема:
В потоке создаю 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;


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


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

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

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


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

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


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

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


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

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


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


> Vatokat   (28.01.10 23:55) 

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


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


> DVM

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


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

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

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


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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.055 c
15-1338546220
MacroDenS
2012-06-01 14:23
2013.03.22
Посоветуйте чтиво по сервисам.


2-1346240265
Wadimka
2012-08-29 15:37
2013.03.22
В чем может быть проблема?


15-1329078602
Юрий
2012-02-13 00:30
2013.03.22
С днем рождения ! 13 февраля 2012 понедельник


15-1344013780
alexdn
2012-08-03 21:09
2013.03.22
Curiosity


15-1348684623
Slipknot_VEVO
2012-09-26 22:37
2013.03.22
Где Розыч узнает про недокументированные функции?