Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Ответ
 
Опции темы
Старый 22.04.2012, 22:37   #1
NoItemName
 Рыцарь
Аватар для J-Fobos
 
J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(J-Fobos сломал счётчик популярности :(
Регистрация: 12.04.2009
Сообщений: 394
Популярность: 47903
Сказал(а) спасибо: 515
Поблагодарили 1,124 раз(а) в 430 сообщениях
 
Cool SSL/HttpS + Indy

За последние две недели несколько человек задали мне вопрос (интересное совпадение) о работе компонент indy с HTTPS протоколом. Казалось бы, что в этом сложного, если все уже готово, исходные коды открыты, проблема в том, что люди не хотят сами разбираться. Напишу пару абзацев, чтоб показать самый короткий путь

[Ссылки могут видеть только зарегистрированные пользователи. ]

Для начала немного теории.
SSL — криптографический протокол, который обеспечивает установление безопасного соединения между клиентом и сервером.
HTTPS — расширение протокола HTTP, поддерживающее шифрование. Данные, передаваемые по протоколу HTTPS, «упаковываются» в криптографический протокол SSL или TLS, тем самым обеспечивается защита этих данных. В отличие от HTTP, для HTTPS по умолчанию используется TCP-порт 443.

Более подробно написано в википедии ([Ссылки могут видеть только зарегистрированные пользователи. ], [Ссылки могут видеть только зарегистрированные пользователи. ]), рекомендую ознакомится.

А теперь к практике.
Во первых нам потребуется два компонента с пакета indy, а именно TIdHTTP (Indy Clients) и TIdSSLIOHandlerSocketOpenSSL (Indy I/O Handlers). Если, будете создавать компоненты в run-time, то не забывайте подключать в Uses модули IdSSL, IdSSLOpenSSL.
IdHTTP1.IOHandler:=IdSSLIOHandlerSocketOpenSSL1; //эта строка в комментариях не нуждается

Во вторых нам надо библиотеки [Ссылки могут видеть только зарегистрированные пользователи. ]. Всего две из целого набора: libeay32.dll и ssleay32.dll. Поэтому можно качать lite версию. Согласно документации библиотеки нужно закинуть в системный каталог винды (папку system32), но я держу их в папке с проектом и рекомендую держать их именно там (чуть ниже объясню почему).

Ну, а финалом этой "сложной" работы будет успешное выполнение кода:

Код:
var
   html:String;
begin
   html:=idHTTP1.Get('https://адрес сайта');
   ShowMessage(html);
end;
Все довольно просто, единственная проблема с которой вы можете столкнутся - не совпадение версий библиотек openssl и indy.
В разных версиях - разные точки входа и возможно немного отличаются имена и аргументы функций и ваша программа не сможет правильно работать (или вообще работать). Именно по причине несовпадения версий я рекомендую держать dll-ки вместе с проектом, у юзера в системе могут быть уже установлены библиотеки другой версии (или их может вообще не быть в системе) и программа даст сбой.
У меня прекрасно работает связка indy 10.5.8 + openssl 1.0.1 (самые новые на момент создания темы). Если у вас другие версии, то либо обновите инди, либо качайте более старые библиотеки openssl.

Желаю успешных get/post запросов
________________

В любом из нас спит гений. И с каждым днем все крепче.
Запомните раз и навсегда:= 'Помочь' <> 'Сделайте за меня';
  Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
MEAT97 (31.01.2013), Skrillex3 (28.09.2012), ЦаРё4иК (01.05.2012), `~{OmRus}~` (22.04.2012)
Старый 22.04.2012, 23:11   #2
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: SSL/HttpS + Indy

Цитата:
Сообщение от J-FobosПосмотреть сообщение
связка indy 10.5.8 + openssl 1.0.1

Indy 9 (стандартная версия в комплекте с Delphi 7) + OpenSSL 0.9.8g. Сбоев не замечал
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
Пользователь сказал cпасибо:
J-Fobos (22.04.2012)
Старый 25.04.2012, 04:36   #3
 Разведчик
Аватар для pavel!
 
pavel! никому не известный тип
Регистрация: 30.09.2010
Сообщений: 4
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: SSL/HttpS + Indy

у меня на делфи7 стояло инди9, проблемка была в то что даже в папку с программой я кидал библиотеки, а она их не находила.
Установил инди10 проблему решил
все очень просто оказалося)
  Ответить с цитированием
Ответ


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Программа] Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5 VeTaL_UA Pascal/Delphi 1 26.01.2013 00:18
[Помогите!] HTTPS Oanalal Вопросы и ответы, обсуждения 6 01.03.2012 21:51
[Помогите!] Delphi7 indy 10 Slavaberezin Вопросы и ответы, обсуждения 7 17.02.2012 15:11

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 01:06.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net