IdHTTP для обеспечения передачи данных в Ubidots (FMX, WIN32) - PullRequest
0 голосов
/ 18 апреля 2019

Я могу отправить зашифрованный фрагмент данных влажности в мою облачную базу данных Ubidots, просто загрузив следующий URL в веб-браузере:

https://industrial.ubidots.com/api/v1.6/devices/MYDEVICENAME/?token=MYTOKENHERE&_method=post&humidity=15.9

Когда я это делаю, я получаю ответ об успешном завершении в окне браузера

{"humidity": [{"status_code": 201}]}

, и данные отображаются в моей таблице данных на Ubidots.

Теперь я хочу сделать это изПриложение FMX (C ++ на Win32) без видимого браузера, и я хотел бы проверить, что я получаю хороший код ответа «201».Я посмотрел на эту ссылку и набрал следующую строку кода:

Memo1->Text = IdHTTP1->Get("https://industrial.ubidots.com/api/v1.6/devices/MYDEVICENAME/?token=MYTOKENHERE&_method=post&humidity=6.9");

При запуске я получаю сообщение об ошибке «Не удалось загрузить библиотеку SSL».Как мне указать TIdHTTP использовать SSL, чтобы он мог обрабатывать HTTPS?Есть ли лучший, более чистый способ сделать это?

1 Ответ

1 голос
/ 18 апреля 2019

Я получаю сообщение об ошибке «Не удалось загрузить библиотеку SSL».

Indy по умолчанию использует OpenSSL. Вы можете использовать функцию Indy WhichFailedToLoad() в IdSSLOpenSSLHeaders.hpp, чтобы узнать, почему она не может загрузить библиотеку OpenSSL.

Как мне указать IdHTTP1 использовать SSL

Вы уже запрашиваете HTTP S url. У Indy просто проблемы с загрузкой библиотеки SSL, потому что она не может найти двоичные файлы библиотеки, или у вас неправильные версии двоичных файлов. Вы можете получить совместимые с Indy двоичные файлы OpenSSL из https://indy.fulgan.com/SSL/. Как правило, вы должны поместить их в ту же папку, что и ваше приложение, но если вы хотите сохранить их где-то еще, то вам нужно вызвать функцию Indy's IdOpenSSLSetLibPath() перед вызовом любого SSL Операции / TLS.

...