Форум: "Сети";
Текущий архив: 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