|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Ошибка IOHandler value is not valid
Приветствую.
Кидаю IdHTTP с Indy client Код:
uses ... IdHTTP ... procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Text:=Idhttp1.Get('https://google.com/'); end; Цитата:
А вот с http:// нормально работает А с httpS:// не хочет Почитал в интернетах, но везде эта проблема решается "через пень колоду". Какие то dll*ки надо рядом с exe кидать, какие то дополнительные компоненты накидывать... Может есть нормальное решение ? Может новый компонент какой ? Или через Win Api как... Мне надо спарсить с https странички несколько строчек. Последний раз редактировалось TEKTON, 28.09.2018 в 03:42. |
#2
|
|||
|
|||
Да нет там ничего сложного.
Да, надо скачать архив с парой dll и просто положить их рядом с бинарником. А код выглядит так (это для Д 10 Токио): Код:
function TMonitorItem.ReadInternetPage(AUrl : String) : String; var IdHTTP : TIdHTTP; Id_HandlerSocket : TIdSSLIOHandlerSocketOpenSSL; begin IdHTTP := TIdHTTP.Create(Nil); Id_HandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP); Try IdHTTP.Request.BasicAuthentication := False; IdHTTP.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0'; Id_HandlerSocket.SSLOptions.Mode := sslmClient; Id_HandlerSocket.SSLOptions.Method := sslvSSLv23; IdHTTP.IOHandler := Id_HandlerSocket; Result := IdHTTP.Get(AUrl); Finally Id_HandlerSocket.Free; IdHTTP.Free; End; end; |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
TEKTON (28.09.2018)
|
#3
|
|||
|
|||
Цитата:
Потом эти Dll надо будет тягать с основным Exe готовой программы? Или они внутрь вкомпилируются? |
#4
|
|||
|
|||
Надо.
Хотя где-то видел версию, которая вкомпилирует код из объектников, но это что-то было не официальное и не стабильное. В принципе, тут 3 варианта: 1. Просто тягаем библиотеки вместе с программой. Не проблема, либо просто в архиве, либо включаем в инсталятор. 2. Кладем библиотеки в Windows (или Windows/System32) и забываем на этой машине о них. 3. "Пришиваем" библиотеки к основной программе и при старте распаковываем их самостоятельно (не работает по умолчанию в случае установки в Program Files - там права админа для записи нужны). 3а. Распаковку делаем во временный каталог и грузим либы из него. Но, вроде, там тоже надо сырцы Indy пропатчить слегка. |
#5
|
|||
|
|||
Мдя...
Вот блин учудили с этим HttpS А по другому никак нельзя код странички получить ? Может какими другими компонентами? Неужели народ так и мучается с этой хренью... Спустя какое то время... Наткнулся вот на такое (см. последний ответ) https://toster.ru/q/73040 Тоесть можно этот unit U_HTTPSrv; сохранить в *.pas и просто в uses подключать? Или как это работает? Если можно примерчик. З.Ы. А как с этим https обстоят дела с других языках? C++ и т.п. Или только делфа с помощью костылей этих работает? Последний раз редактировалось TEKTON, 29.09.2018 в 21:17. |
#6
|
|||
|
|||
1. Да ничего там не учудили. Я тебе дал готовую процедуру. Просто вызываешь ее и все работает (ну только библиотечки надо рядом с ехе кинуть).
2. В том ответе просто пример на примере сервера, хотя по коду все тоже самое. 3. В других языках все так же. Полностью готового кода нет. Весь вопрос в библиотеках. Вообще, есть готовый метод в WinAPI, который задействует встроенный IE для загрузки странички. Лень искать, погугли сам. Но помню там был целый модуль для того, что бы использовать его, кода страницы на 2-3... |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
TEKTON (29.09.2018)
|
#7
|
|||
|
|||
Цитата:
Что б код странички всего то получить, аж две библы надо тягать! У меня парсер малюченький, который 15 ссылок из страницы вырезает и всё. Типо информатора. Появилась новая тема на сайте, выдалось сообщение типо "на сайте появилась новая тема"... Это "костыль" а не нормальное решение проблемы! Надеюсь кто то запилит нормальный компонент, который избавит всех нас от этого "гемороя". З,Ы. И что? из этих двух библ много там работает функций что б этот гет запрос отослать/получить, или по 1й всего, а остальные "баласт" ? Если пара всего, может можно как то выдрать их и типо ASM вставок сделать в код. Последний раз редактировалось TEKTON, 29.09.2018 в 23:08. |
#8
|
|||
|
|||
Скачал библы, забил код который Вы привели выше, экспериментирую...
Странности всё же есть... Некоторые сайты - полёт нормальный. Например https://www.google.com https://antichat.com https://otvet.mail.ru А вот например на https://repack.me Выдаёт ошибку: Error connecting with SSL. Error connecting with SSL. error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error. Как с этого сайта получить код странички? Так же не катят: https://yandex.ru https://www.youtube.com ... Последний раз редактировалось TEKTON, 30.09.2018 в 04:22. |
#9
|
|||
|
|||
Поставь другой тип авторизации. Видимо сайт не поддерживает TLS v1
PS. Ну открой описание SSL, почитай. Тогда поймешь, почему нет "нативного" кода. Там еще экспортные ограничения на сильную криптографию играют. Так что не все так просто... |
#10
|
|||
|
|||
Перекачал всё что тока можно https://indy.fulgan.com/ZIP/
Не хрена не получается То одну ошибку бьёт, то другую... (вот этот адрес https://repack.me) Кто придумал этот грёбаный HttpS !!! Что б ему было "хорошо"! Раньше всё работало с пол оборота! Приятно было работать с сайтами, а сейчас жопа полная и геморой. Дальше нецензурные мысли... И много... |
Этот пользователь сказал Спасибо F.o.x. за это полезное сообщение: | ||
TEKTON (01.10.2018)
|