Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.08.2009, 22:14   #1
delphyok
Пользователь
 
Регистрация: 22.02.2009
Сообщений: 19
По умолчанию Как обработать ошибки при скачке html-страниц?

Здравствуйте!

Очень нужно скачивать интернет-страницы из интернета, чтобы впоследствии работать с их html-кодом как с массивом текстовых строк. Из книг и форумов узнал, что этого можно добиться с помощью компонента IdHTTP. Вот пример, с применением копирования html-кода страницы в TMemo:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Text:=idHTTP1.Get('http://programmersforum.ru');
end;
После экспериментов с использованием, возникли следующие вопросы:

1. Заметил, что при заходе на некоторые адреса без www, скажем 'http://yandex.ru' вылетает ошибка. Вопрос, проблему можно устранить, только лишь добавлением www в адрес? Может ли возникнуть обратная ситуация, что наоборот, c www работать не будет?

2. Также возникает ошибка в случае, если недоступна страница (сервер выдает стандартное окно ошибки) или сервер.

Как лучше обработать эти исключительные ситуации, помогите пожалуйста
delphyok вне форума Ответить с цитированием
Старый 10.08.2009, 23:25   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1) не должно.
2) использовать защищенные блоки(
Код:
try
except
end;
)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.08.2009, 08:25   #3
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

1. Ошибка возможна. Потому что вы выполняете запрос к не существующей странице (не существует страницы http://programmersforum.ru). Далее все зависит от сервера. В основном сервер отдает корректно настроенную индексную страницу, но это не всегда, так как индексная страница может оказаться просто контроллером, который будет уже сам решать куда вас отправлять. Эта ситуация должна решаться с помощью включения поддержки редиректа в IdHTTP (handleredirects)
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 11.08.2009, 19:42   #4
delphyok
Пользователь
 
Регистрация: 22.02.2009
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
2) использовать защищенные блоки
Код:
try
except
end;
Большое спасибо за наводку. Почитал по теме защищенных блоков, помогло

Но возник еще один вопрос, выяснил, что оказывается все не так просто, т.е. недостаточно задать url в методе idHTTP1.Get. Например, не распознаются некоторые динамические страницы, страницы со скриптами, а также, если допустим взять url какого-нибудь поисковика, скажем, яндекса - http://yandex.ru/yandsearch?rpt=rad&...BA%D0%B2%D0%B0, с поисковым запросом в урле, то html-код получить также не удается. Что делать в этих случаях? Хотя бы в каком направлении искать ответ?

Цитата:
Сообщение от Квэнди Посмотреть сообщение
1. Ошибка возможна. Потому что вы выполняете запрос к не существующей странице (не существует страницы http://programmersforum.ru). Далее все зависит от сервера. В основном сервер отдает корректно настроенную индексную страницу, но это не всегда, так как индексная страница может оказаться просто контроллером, который будет уже сам решать куда вас отправлять. Эта ситуация должна решаться с помощью включения поддержки редиректа в IdHTTP (handleredirects)
Спасибо, посмотрю про редирект
delphyok вне форума Ответить с цитированием
Старый 12.08.2009, 08:16   #5
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Цитата:
Но возник еще один вопрос, выяснил, что оказывается все не так просто, т.е. недостаточно задать url в методе idHTTP1.Get. Например, не распознаются некоторые динамические страницы, страницы со скриптами, а также, если допустим взять url какого-нибудь поисковика, скажем, яндекса - http://yandex.ru/yandsearch?rpt=rad&...BA%D0%B2%D0%B0, с поисковым запросом в урле, то html-код получить также не удается. Что делать в этих случаях? Хотя бы в каком направлении искать ответ?
С данным запросом все удается без выставления дополнительных параметров результаты поиска Get-ом получались.
Тестировал на D2009 с Indy 10.5.6 rev.3744
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 14.08.2009, 14:03   #6
delphyok
Пользователь
 
Регистрация: 22.02.2009
Сообщений: 19
По умолчанию

Не знаю, у меня не работает , выдает ошибку - "...EIdHTTPProtocolException with message 'HTTP/1.1 301 Moved Permanently'". Среда - Дельфи 2006, попробую переустановить на более позднюю версию, возможно проблема решиться.
delphyok вне форума Ответить с цитированием
Старый 14.08.2009, 14:06   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

тут не в Дельфе дело.

у меня 6-ка и все шикарно.
а попробуйте использовать блоки(выше я говорил)
и запускать вне IDE
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нумерация страниц в HTML Killer_djon JavaScript, Ajax 20 04.02.2009 04:09
Сэйв HTML страниц... Black DeviL Общие вопросы Delphi 3 21.02.2008 21:45
Редактор html страниц Sanek_ntsk Софт 14 13.02.2008 08:15