Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > IdHTTP.Get


Автор: Alex 13.2.2005, 23:57
Как грамотно отловить ошибку отсутствия файла на сервере при скачивании его через IdHTTP.Get?

Автор: Snowy 14.2.2005, 08:13
Если файл не html, то можно проверить по первым 5 байтам.
Если файла нет, то вернется 404, которая соответственно = '<HTML'.
Если же запрашивалась HTML страничка, то никакой гарантии нет.
Некоторые сервера вместо 404-й страницы могут выдать что угодно, от совершенно левого текста, то редиректа на страницу хостера.
Можно попробовать анализировать, но гарантии никакой быть не может.

Автор: Alex 14.2.2005, 16:32
А код ошибки никак нельзя получить?

Автор: z-END 14.2.2005, 17:15
idHTTP.Response не помогает?

Автор: Alex 14.2.2005, 17:26
z-END, Помогает.

Автор: Snowy 14.2.2005, 17:55
Дело в том, что сервер не возвращает ошибку, а тем более ее код.
Если страницы на сервере нет, то он просто вернет страницу 404.
Для клиента она ничем не отличается от обычной страницы.
Дал запрос - получил страницу.
Как правило можно попробовать просканить первые строк 8 текста и поискать что-нить типа
<h2>HTTP Error 404</h2>
В принципе должно быть достаточно просто Error 404.
Но гарантии никакой. Вид страницы целиком зависит от серверной стороны. Быть там может что угодно.
Вот например:
http://kkzzkkss.narod.ru/ - 404 есть, но это еще не признак
http://www.yahoo.com/kkzzkkss.html - анализу не поддается.
mail.ru вообще автоматом редиректит на главную страницу.
Так что определить просто невозможно. Иначе всякие даунлодеры не закачивали бы 404-е страницы.

Автор: Alex 14.2.2005, 19:20
Snowy, это все понятно, но сервак, грубо говоря, мой и качать я с него буду не html документы так, что все нормально. Какие проблемы есть при скачке, html я знаю.

Спасибо за помощь.

Автор: <Spawn> 16.2.2005, 05:40
На всякий случай:

Код

 idHTTP1.Response.ResponseCode
 idHTTP1.ResponseCode

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)