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

Вниз

TidHttp в цикле после неудачного запроса больше не конектится   Найти похожие ветки 

 
Grin   (2003-01-14 15:59) [0]

Цикл
...
1 try
2 AssignFile(B, "htm.txt");
3 Rewrite(B);
4 WriteLn(B,HTTP.Get(url);
5 CloseFile(B);
6 except
7 Memo1.Text := "No conection";
8 LbNCCount.Caption:= IntToStr(c);
9 end;
...

После неудачи в 4-й строке до конца цикла каждый раз вылетает в эксершн стр6.
Вопрос:
Как правильно обойти неудачу в 4-й строке?

Зарание благодарен.


 
Reindeer Moss Eater   (2003-01-14 16:02) [1]

Подсказка:
TidHttp никакого понятия о твоем цикле не имеет. И конечно же ошибка связана не с ним. Обрати внимание на освобождение ресурсов.


 
Reindeer Moss Eater   (2003-01-14 16:05) [2]

А вообюще лучще сначала делать Get, и только в случае успеха открывать файл.


 
Chubais   (2003-01-14 16:22) [3]

ну дык на эксепшне поставь дисконект


 
Reindeer Moss Eater   (2003-01-14 16:26) [4]

Chubais ©
Не путай человека.


 
Grin   (2003-01-14 16:32) [5]


> TidHttp никакого понятия о твоем цикле не имеет.

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


> Обрати внимание на освобождение ресурсов.

После HTTP.Free; вылетает ужасня ошибка и все плохо. Что делать??


 
Reindeer Moss Eater   (2003-01-14 16:39) [6]

Еще раз:
Для TidHttp абсолютно фиолетово сколько раз ты вызываешь метод GET. Абсолютно. В цикле или вне цикла.

У тебя в одной строке кода два вызова, которые потенциально могут вызвать исключение. С чего ты решил, что результата не достигаешь из-за якобы странного поведения idHTTP в цикле?????


 
Grin   (2003-01-14 16:52) [7]


> У тебя в одной строке кода два вызова, которые потенциально
> могут вызвать исключение. С чего ты решил, что результата
> не достигаешь из-за якобы странного поведения idHTTP в цикле?????

Ну так первые три строчки полюбому выполняются
1 try
2 AssignFile(B, "htm.txt");
3 Rewrite(B);


А HTTP.Get(url)после обращения к неверному урлу на следуйщем круге (и до конца цикла) не достает сайты ....?




 
Reindeer Moss Eater   (2003-01-14 16:55) [8]

WriteLn(B,HTTP. Get(url);
Так надеюсь понятно наконец?


 
Reindeer Moss Eater   (2003-01-14 17:06) [9]

И еще подумай, будет ли закрыт открытый файл в случае возникновения исключения?


 
Grin   (2003-01-14 17:08) [10]


> Так надеюсь понятно наконец?


Ну какой эксепшн может быть в WriteLn?? Если файл есть.
А вот после HTTP.Get(url) ничего нет и файл в итоге пустой...


 
Grin   (2003-01-14 17:11) [11]


> И еще подумай, будет ли закрыт открытый файл в случае возникновения
> исключения?

Ну выдавалобы I/O Error ...


 
Chubais   (2003-01-14 17:12) [12]

и совсем не путаю
у меня было такое - после ошибки дисконект приходилось делать
может я это и неправильно делал, но мне помогало)))


 
Reindeer Moss Eater   (2003-01-14 17:20) [13]

>Chubais

Вот кусочек из класса:
procedure TIdCustomHTTP.CheckAndConnect(AResponse: TIdHTTPResponse);
begin
if not AResponse.KeepAlive then begin
Disconnect;
end;

При вызове Get внутри класса вызывается CheckAndConnect.

>Grin © (14.01.03 17:11)

Если в 4 строке исключение, то кто закрывает файл?


 
Reindeer Moss Eater   (2003-01-14 17:22) [14]

А вот после HTTP.Get(url) ничего нет и файл в итоге пустой...
Файл пустой не обязательно потому, что Get ничего не вернул.


 
Grin   (2003-01-14 17:30) [15]


> Chubais


Не помогает ...


 
Grin   (2003-01-14 17:34) [16]


> Если в 4 строке исключение, то кто закрывает файл?

Зачем, он перезаписывается на следующем круге....


 
Chubais   (2003-01-14 17:35) [17]

2 Reindeer Moss Eater
мб, у мну версия не та была
мб KeepAlive был True
тем не менее я бы на месте грина попробовал..
и давно бы get в строку сделал, чтоб не было толкания на одном месте и выяснения, в чем причина ошиПки


 
Reindeer Moss Eater   (2003-01-14 17:39) [18]

Зачем, он перезаписывается на следующем круге....
Grin, тебе не сюда, тебе в патентное бюро надо. Пока не застолбили новейший способ борьбы с потерей ресурсов.



 
Chubais   (2003-01-14 17:41) [19]

> Grin © (14.01.03 17:30)
ну тада - F7/F8 тебе помогут


 
Grin   (2003-01-14 17:42) [20]

Я иссяк ..........
Я почти уверен, что проблема в TIDHttp. Такое ощющение, что после неудачного запроса он запоминает свое состояние и больше ни чего не конектит .............
Я скоро зДоХнУ..............


 
Reindeer Moss Eater   (2003-01-14 17:43) [21]

Таблетки от упрямства не пробовал принимать?
Не в TIDHttp проблема.


 
Grin   (2003-01-14 17:44) [22]


> Grin, тебе не сюда, тебе в патентное бюро надо. Пока не
> застолбили новейший способ борьбы с потерей ресурсов.

Гуд.
Загляну и туда как-нибудь.


 
Grin   (2003-01-14 17:46) [23]


> Таблетки от упрямства

:-)) ок!


 
Reindeer Moss Eater   (2003-01-14 17:48) [24]

var
Trafic_Limit : boolean;
Content:string;
Trafic_Limit:=False;
While not Trafic_Limit do
try
Application.ProcessMessages;
Content:=HTTP.Get(url);
Memo1.Lines.Add(Content);
exception
On E:Exception do Memo1.Lines.Text:=E.Message;
end;


 
Chubais   (2003-01-14 18:04) [25]

Reindeer Moss Eater (14.01.03 17:39)

подписываюсь))))


 
Grin   (2003-01-14 18:25) [26]


> On E:Exception do Memo1.Lines.Text:=E.Message;


Socket Error # 10053
Software caused connection abort.

?????????????


 
Grin   (2003-01-15 10:56) [27]


> Reindeer Moss Eater (14.01.03 16:02)
> Подсказка:
> TidHttp никакого понятия о твоем цикле не имеет. И конечно
> же ошибка связана не с ним. Обрати внимание на освобождение ресурсов.

Таблетки от упрямства - хорошая штук!!! Спасибо! До скорого!


 
Reindeer Moss Eater   (2003-01-15 11:04) [28]

Grin ©
Если есть подозрение, что в той версии Indy, что у тебя, TidHTTP плохо работает при последовательных вызовах методов, то самое простое решение - это создавать новый экземпляр TidHTTP в каждой итерации цикла с последующим убитием его.


 
Grin   (2003-01-15 11:44) [29]


> создавать новый экземпляр


Спасибо, я так и сделал :-))



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

Форум: "Сети";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.01 c
14-17286
Дракон
2003-02-18 12:25
2003.03.06
Контроллер?? Или как?


1-17173
kudatsky
2003-02-24 09:54
2003.03.06
TQuickRep


3-16890
ol
2003-02-14 13:21
2003.03.06
изменение ключевых полей в мастер-детейл????


1-16998
BPK
2003-02-22 19:43
2003.03.06
Как автоматически открывать Main unit в Library?


3-16937
Олег2406
2003-02-14 11:12
2003.03.06
Замучала ошибка Invalid..Insufficient... Table: С ... _QSQ12.db





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский