Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Обработка исключительных ситуаций 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.099 c
15-1346171752
Baks
2012-08-28 20:35
2013.03.22
Маленький тест Delphi программиста для Yandex


2-1340050503
ankazh
2012-06-19 00:15
2013.03.22
Отмена добавления новой записи


2-1330198166
Alex_C
2012-02-25 23:29
2013.03.22
Закрыть фаил. Надежно.


15-1329689916
Дмитрий С
2012-02-20 02:18
2013.03.22
Браузер на базе линукса.


15-1330707938
ClawClaw
2012-03-02 21:05
2013.03.22
Внезапно стал выключаться ноутбук





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский