§2.3. Indy и HTTPS
Часть I. Теория
2.1 Подключение ЯД к Windows
2.2 Создание папки приложения
2.3 Indy и HTTPS
2.4 Скрипач как прокси
2.5 Протокольные компоненты, часть 1. TidHTTP и JSON
2.5 Протокольные компоненты, часть 2. TREST~ и TDataSet
Как же нам построить программу для работы с REST API Яндекс Диска?
Embarcadero предлагает нам мультиплатформенные Indy-компоненты. Но с маленькой оговоркой - они не содержат SSL-шифрования. Т.е. работа по протоколу https, который необходим ЯД (да и прочим сервисам с авторизацией), может стать несколько более сложной, чем "раз, и поехали". Причины этого нюанса лежат в юридической плоскости. Нам же нужно разобраться со следствием в разрезе работоспособности наших приложений.
В итоге мы имеем пару DLL - libeay32.dll и ssleay32.dll в openssl-1.0.2a-i386-win32.zip для Win32, пару DLL(удивительно, но имена те же, с цифрами 32) в openssl-1.0.2a-x64_86-win64.zip для Win64 и набор для статической линковки под iOS (судя по дате, его уже давно не обновляли) - libcrypto.a и libssl.a в OpenSSLStaticLibs.7z. А где же Андроидные бинарники? Видите ли, Андроид предоставляет стандартный доступ к шифрованию SSL, и Indy прекрасно может этим пользоваться безо всяких дополнительных приспособлений.
Что делать с DLL - понятно. Есть вариант А - надёжный: кладём их в каталог с приложением и для дизайн-тайма в C:\Program Files (x86)\Embarcadero\Studio\версия\bin и bi64. Есть вариант Б, который выглядит гораздо предпочтительнее: выложить DLL в системный каталог - C:\Windows\System32 и C:\Windows\SysWOW64 в соответствии с разрядностью библиотек. Важное замечание по второму варианту: имейте в виду, что скорее всего DLL с такими именами у вас уже есть, но они старых версий, и в них нет всех нужных функций. Indy при этом выдаёт сообщение о том, что не удаётся загрузить библиотеки SSL. Обновите их и не забудьте перезагрузить систему. Если и это не поможет, добро пожаловать в "DLL hell"!
Для того, чтобы запустить йОсное приложение, файлы libcrypto.a и libssl.a надо подключить к проекту через deployment, а в раздел uses добавить модуль IdSSLOpenSSLHeaders_Static, где содержатся объявления об импорте функций и некоторые прочие заголовочные штуки - непонятные, но нужные.
Теперь мы можем делать запросы по https не только в запущенном на устройстве приложении, но даже в ещё незапущенном, в режиме проектирования, прямо в ObjectInspector!
Часть I. Теория
2.1 Подключение ЯД к Windows
2.2 Создание папки приложения
2.3 Indy и HTTPS
2.4 Скрипач как прокси
2.5 Протокольные компоненты, часть 1. TidHTTP и JSON
2.5 Протокольные компоненты, часть 2. TREST~ и TDataSet
Комментариев нет:
Отправить комментарий