Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > IOHandler value is not valid


Автор: Akella 18.1.2010, 13:10
Нужно получить контент сайтов:
novorossiysk.irr.ru/real-estate/rent
и
ivanovo.irr.ru/real-estate/rent
Выполняю
Код

Memo1.Text := Utf8ToAnsi(IdHTTP1.Get('http://novorossiysk.irr.ru/real-estate/rent/'));


В ответ: Project *****.exe raised exception class EIdIOHandlerPropInvalid with message 'IOHandler value is not valid'. Process stopped. Use step or run to continue.

Что подсунуть idHTTP в качестве IOHandler? Пробовал IdIOHandlerStream и IdIOHandlerStack - не помогает, другие ошибки вываливаются.


Вот ещё в догонку. Может ошибка связана IdCompressorZLibEx.
Не могу найти компоненту в дельфи  IdCompressorZLibEx, хотя не форме он лежит в основном проекте.

Создаю новый проект. Открываю существующий. Копирую в IdCompressorZLibEx1 из существующего. Вставляю в новый. Ошибка: class TIdCompressorZLibEx not found

D2007. Indy  10.1.5

Добавлено @ 13:14
Хотя компонент вроде как установлен:
http://fastpic.ru/view/1/2010/0118/802a5f357e04693535152aa441927a56.jpeg.html

Путь прописан: $(BDS)\Lib\Indy10
Файл присутствует: C:\Program Files\CodeGear\RAD Studio\5.0\lib\Indy10\IdCompressorZLibEx.dcu

Автор: Akella 18.1.2010, 15:48
C IdCompressorZLibEx разобрался. Связи с ошибкой "'IOHandler value is not valid" нет. Щёлкнул правой кнопкой по палитре компонент. Выполнил команду reset.

Дальше. Относительно IOHandler value is not valid.

Ошибочка со ссылкой. На самом деле на этих страничках idHTTP спотыкается:
novorossiysk.irr.ru/advert/55647193/
novorossiysk.irr.ru/advert/55718429/
novorossiysk.irr.ru/advert/49045114/

что там может быть военного

Автор: Akella 18.1.2010, 16:19
Делаю простой эксперимент.
На форму кидаю IdHTTP и Memo
В этом случае в мемо попадает текст без ошибок :(
Настройки IdHTTP одинаковые.

Автор: Akella 18.1.2010, 17:12
Начинаю соображать.
В конце страничек есть баннеры. один из баннеров ведёт на pronto.ru, когда заходишь на сайт браузером, то автоматом попадаешь на https, хотя ссылка на страничке http. Тут-то IdHttp и загинается, гад.
Что можно придумать?

Добавлено через 5 минут и 39 секунд
Вопрос такой. Как IdHttp заставить не заходить на другие сайты?

Автор: Romikgy 18.1.2010, 18:06
а если попробовать заюзать OnRedirect  и проверять куда нужно а куда нет ....

Автор: Keeper89 18.1.2010, 19:19
Akella

Для защищенных соединений (SSL) можно поместить компонент IdSSLIOHandlerSocket и подсунуть его в IOHandler.

Плюс, что если парсить страницы для печати? На них вроде бы нет рекламы и редиректов.

Автор: Akella 18.1.2010, 21:37
Цитата(Keeper89 @  18.1.2010,  19:19 Найти цитируемый пост)
Для защищенных соединений (SSL) можно поместить компонент IdSSLIOHandlerSocket и подсунуть его в IOHandler.

Нету защищённых соединений и не хочу их использовать. или использовать "автоматически".


Меня интересует ivanovo.irr.ru и протокол http, а не pronto.ru с протоколом https.

Почему IdHTTP в пустом тестовом проекте нормально грузятся странички, а в проекте IdHTTP пытается лезть на другие сайты? Свойства IdHTTP одинаковые.


Я однажды столкнулся с IdFtp, эта компонента тоже ни с того ни с чего начала вести себя непредсказуемо. Оказалось, что в USES попали какие-то модули не те.

Добавлено через 2 минуты и 10 секунд
Цитата(Romikgy @  18.1.2010,  18:06 Найти цитируемый пост)
а если попробовать заюзать OnRedirect  и проверять куда нужно а куда нет ....

Цитата
https://login.pronto.ru/login?gateway=true&service=http://irr.ru/controllers/cas/auth.php


Добавлено через 9 минут и 24 секунды
Если отменить редирект:
Код

procedure TfmSite.IdHTTP1Redirect(Sender: TObject; var dest: string;
  var NumRedirect: Integer; var Handled: Boolean; var VMethod: string);
begin
  if Pos('pronto.ru', dest) <> 0 then
    begin
      Handled := false;
    end;


То вываливается ошибка 302

Автор: Akella 18.1.2010, 21:56
Нужно подсунуть или какой-то универсальный IOHandler, или подсовывать в какой-то момент SSL IOHandler  smile 
Кто-нить поможет?  smile 

Автор: Keeper89 18.1.2010, 22:58
Цитата(Akella @  18.1.2010,  21:56 Найти цитируемый пост)
Нужно подсунуть или какой-то универсальный IOHandler, или подсовывать в какой-то момент SSL IOHandler

Я это и предлагаю сделать smile
  • TIdHTTP
  • TIdSSLIOHandlerSocketOpenSSL
  • И два файла: libeay32.dll и ssleay32.dll
https://forums.codegear.com/thread.jspa?threadID=8692

Автор: Akella 18.1.2010, 23:02
Цитата(Keeper89 @  18.1.2010,  22:58 Найти цитируемый пост)
# TIdHTTP
# TIdSSLIOHandlerSocketOpenSSL
# И два файла: libeay32.dll и ssleay32.dll

Это я и делаю.

Добавлено через 41 секунду
Вот, что интересует?
Цитата(Akella @  18.1.2010,  21:37 Найти цитируемый пост)
Почему IdHTTP в пустом тестовом проекте нормально грузятся странички, а в проекте IdHTTP пытается лезть на другие сайты? Свойства IdHTTP одинаковые.


Добавлено через 4 минуты и 32 секунды
Keeper89, ты понимаешь, изначально заходим на http, а там нам в лоб https....
Я с таким не сталкивался. Что делать в таких случаях?
Если сразу связать TIdHTTP и TIdSSLIOHandlerSocketOpenSSL на этапе проектирования и выполнить TIdHTTP.get то получаем ошибку read time out

Добавлено через 5 минут и 11 секунд
Цитата(Akella @  18.1.2010,  21:56 Найти цитируемый пост)
ужно подсунуть или какой-то универсальный IOHandler, или подсовывать в какой-то момент SSL IOHandler  smile

...или-или....

Добавлено через 11 минут и 54 секунды
Звезда в шоке (с).   smile 
Теперь и в новом проекте  IOHandler value is not valid

Автор: Akella 19.1.2010, 00:36
Короче, тут столько левого. создам я новую тему.

Автор: Keeper89 19.1.2010, 00:41
Сделал тестовый проект, Indy 10.1.1. : http://slil.ru/28511360

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