|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.08.2009, 22:14 | #1 |
Пользователь
Регистрация: 22.02.2009
Сообщений: 19
|
Как обработать ошибки при скачке html-страниц?
Здравствуйте!
Очень нужно скачивать интернет-страницы из интернета, чтобы впоследствии работать с их html-кодом как с массивом текстовых строк. Из книг и форумов узнал, что этого можно добиться с помощью компонента IdHTTP. Вот пример, с применением копирования html-кода страницы в TMemo: Код:
1. Заметил, что при заходе на некоторые адреса без www, скажем 'http://yandex.ru' вылетает ошибка. Вопрос, проблему можно устранить, только лишь добавлением www в адрес? Может ли возникнуть обратная ситуация, что наоборот, c www работать не будет? 2. Также возникает ошибка в случае, если недоступна страница (сервер выдает стандартное окно ошибки) или сервер. Как лучше обработать эти исключительные ситуации, помогите пожалуйста |
10.08.2009, 23:25 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
1) не должно.
2) использовать защищенные блоки( Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
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 | |
Пользователь
Регистрация: 22.02.2009
Сообщений: 19
|
Большое спасибо за наводку. Почитал по теме защищенных блоков, помогло
Но возник еще один вопрос, выяснил, что оказывается все не так просто, т.е. недостаточно задать url в методе idHTTP1.Get. Например, не распознаются некоторые динамические страницы, страницы со скриптами, а также, если допустим взять url какого-нибудь поисковика, скажем, яндекса - http://yandex.ru/yandsearch?rpt=rad&...BA%D0%B2%D0%B0, с поисковым запросом в урле, то html-код получить также не удается. Что делать в этих случаях? Хотя бы в каком направлении искать ответ? Цитата:
|
|
12.08.2009, 08:16 | #5 | |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Цитата:
Тестировал на D2009 с Indy 10.5.6 rev.3744
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
|
14.08.2009, 14:03 | #6 |
Пользователь
Регистрация: 22.02.2009
Сообщений: 19
|
Не знаю, у меня не работает , выдает ошибку - "...EIdHTTPProtocolException with message 'HTTP/1.1 301 Moved Permanently'". Среда - Дельфи 2006, попробую переустановить на более позднюю версию, возможно проблема решиться.
|
14.08.2009, 14:06 | #7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
тут не в Дельфе дело.
у меня 6-ка и все шикарно. а попробуйте использовать блоки(выше я говорил) и запускать вне IDE Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нумерация страниц в 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 |