Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.09.2018, 00:23
TEKTON TEKTON вне форума
Новичок
 
Регистрация: 14.03.2011
Сообщения: 60
Репутация: 10
По умолчанию Ошибка IOHandler value is not valid

Приветствую.
Кидаю IdHTTP с Indy client
Код:
uses ... IdHTTP
...
procedure TForm1.Button1Click(Sender: TObject);
begin
 Memo1.Text:=Idhttp1.Get('https://google.com/');
end;
 
Получаю ошибку
Цитата:
IOHandler value is not valid.

А вот с http:// нормально работает
А с httpS:// не хочет

Почитал в интернетах, но везде эта проблема решается "через пень колоду".
Какие то dll*ки надо рядом с exe кидать, какие то дополнительные компоненты накидывать...

Может есть нормальное решение ?
Может новый компонент какой ?
Или через Win Api как...

Мне надо спарсить с https странички несколько строчек.

Последний раз редактировалось TEKTON, 28.09.2018 в 03:42.
Ответить с цитированием
  #2  
Старый 28.09.2018, 05:07
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Да нет там ничего сложного.
Да, надо скачать архив с парой 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  
Старый 28.09.2018, 10:35
TEKTON TEKTON вне форума
Новичок
 
Регистрация: 14.03.2011
Сообщения: 60
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Да нет там ничего сложного.
Да, надо скачать архив с парой dll и просто положить их рядом с бинарником. ...
И что?
Потом эти Dll надо будет тягать с основным Exe готовой программы?
Или они внутрь вкомпилируются?
Ответить с цитированием
  #4  
Старый 28.09.2018, 20:08
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Надо.
Хотя где-то видел версию, которая вкомпилирует код из объектников, но это что-то было не официальное и не стабильное.

В принципе, тут 3 варианта:
1. Просто тягаем библиотеки вместе с программой. Не проблема, либо просто в архиве, либо включаем в инсталятор.
2. Кладем библиотеки в Windows (или Windows/System32) и забываем на
этой машине о них.
3. "Пришиваем" библиотеки к основной программе и при старте распаковываем их самостоятельно (не работает по умолчанию в случае установки в Program Files - там права админа для записи нужны).
3а. Распаковку делаем во временный каталог и грузим либы из него. Но, вроде, там тоже надо сырцы Indy пропатчить слегка.
Ответить с цитированием
  #5  
Старый 29.09.2018, 19:02
TEKTON TEKTON вне форума
Новичок
 
Регистрация: 14.03.2011
Сообщения: 60
Репутация: 10
По умолчанию

Мдя...
Вот блин учудили с этим HttpS
А по другому никак нельзя код странички получить ?
Может какими другими компонентами?
Неужели народ так и мучается с этой хренью...

Спустя какое то время...
Наткнулся вот на такое (см. последний ответ)
https://toster.ru/q/73040
Тоесть можно этот unit U_HTTPSrv; сохранить в *.pas и просто в uses подключать?
Или как это работает?
Если можно примерчик.

З.Ы. А как с этим https обстоят дела с других языках? C++ и т.п.
Или только делфа с помощью костылей этих работает?

Последний раз редактировалось TEKTON, 29.09.2018 в 21:17.
Ответить с цитированием
  #6  
Старый 29.09.2018, 22:46
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Да ничего там не учудили. Я тебе дал готовую процедуру. Просто вызываешь ее и все работает (ну только библиотечки надо рядом с ехе кинуть).
2. В том ответе просто пример на примере сервера, хотя по коду все тоже самое.
3. В других языках все так же. Полностью готового кода нет. Весь вопрос в библиотеках. Вообще, есть готовый метод в WinAPI, который задействует встроенный IE для загрузки странички. Лень искать, погугли сам. Но помню там был целый модуль для того, что бы использовать его, кода страницы на 2-3...
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
TEKTON (29.09.2018)
  #7  
Старый 29.09.2018, 22:56
TEKTON TEKTON вне форума
Новичок
 
Регистрация: 14.03.2011
Сообщения: 60
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
...ну только библиотечки надо рядом с ехе кинуть.
Блииинннн!!!!
Что б код странички всего то получить, аж две библы надо тягать!
У меня парсер малюченький, который 15 ссылок из страницы вырезает и всё.
Типо информатора.
Появилась новая тема на сайте, выдалось сообщение типо "на сайте появилась новая тема"...
Это "костыль" а не нормальное решение проблемы!
Надеюсь кто то запилит нормальный компонент, который избавит всех нас от этого "гемороя".

З,Ы. И что? из этих двух библ много там работает функций что б этот гет запрос отослать/получить, или по 1й всего, а остальные "баласт" ?
Если пара всего, может можно как то выдрать их и типо ASM вставок сделать в код.

Последний раз редактировалось TEKTON, 29.09.2018 в 23:08.
Ответить с цитированием
  #8  
Старый 30.09.2018, 04:03
TEKTON TEKTON вне форума
Новичок
 
Регистрация: 14.03.2011
Сообщения: 60
Репутация: 10
По умолчанию

Скачал библы, забил код который Вы привели выше, экспериментирую...
Странности всё же есть...
Некоторые сайты - полёт нормальный.
Например
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  
Старый 30.09.2018, 06:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Поставь другой тип авторизации. Видимо сайт не поддерживает TLS v1

PS. Ну открой описание SSL, почитай. Тогда поймешь, почему нет "нативного" кода. Там еще экспортные ограничения на сильную криптографию играют. Так что не все так просто...
Ответить с цитированием
  #10  
Старый 30.09.2018, 22:05
TEKTON TEKTON вне форума
Новичок
 
Регистрация: 14.03.2011
Сообщения: 60
Репутация: 10
По умолчанию

Перекачал всё что тока можно https://indy.fulgan.com/ZIP/
Не хрена не получается
То одну ошибку бьёт, то другую... (вот этот адрес https://repack.me)
Кто придумал этот грёбаный HttpS !!! Что б ему было "хорошо"!
Раньше всё работало с пол оборота!
Приятно было работать с сайтами, а сейчас жопа полная и геморой.
Дальше нецензурные мысли... И много...
Ответить с цитированием
  #11  
Старый 01.10.2018, 09:24
F.o.x. F.o.x. вне форума
Прохожий
 
Регистрация: 16.06.2018
Сообщения: 14
Версия Delphi: 7, XE3
Репутация: 10
Сообщение

Если у тебя Delphi 7, то можно вытащить компоненты от сюда. Работает с HTTPS без библиотек.
Для других версий Delphi не проверял.
__________________
Соцпрофиль: vk.com/id401642609
Ответить с цитированием
Этот пользователь сказал Спасибо F.o.x. за это полезное сообщение:
TEKTON (01.10.2018)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter