IdHTTP 确保推送数据到 Ubidots (FMX, WIN32)

IdHTTP to ensure push data to Ubidots (FMX, WIN32)

我只需在网络浏览器中加载以下 url 即可将加密的湿度数据推送到我的 Ubidots 云数据库:

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

当我这样做时,我在浏览器中收到成功响应 window

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

并且数据显示在我在 Ubidots 上的数据 table 中。

现在,我想在没有可见浏览器的情况下从 FMX 应用程序(Win32 上的 C++)执行此操作,并且我想检查我是否获得了良好的“201”响应代码。我查看了 并拼凑了以下代码行:

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

当我 运行 它时,我收到一条 "Could not load SSL library" 错误消息。我如何告诉 TIdHTTP 使用 SSL 以便它可以处理 HTTPS?有更好、更简洁的方法吗?

I get a "Could not load SSL library" error message.

Indy 默认使用 OpenSSL。您可以在 IdSSLOpenSSLHeaders.hpp 中使用 Indy 的 WhichFailedToLoad() 函数来找出它无法加载 OpenSSL 库的原因。

How do I tell IdHTTP1 to use SSL

您已经通过请求 HTTPS url。 Indy 只是在加载 SSL 库时遇到问题,要么是因为它找不到库二进制文件,要么是你的二进制文件版本错误。您可以从 https://indy.fulgan.com/SSL/ 获得 Indy 兼容的 OpenSSL 二进制文件。通常,您应该将它们放在与您的应用程序相同的文件夹中,但如果您想将它们存储在其他地方,那么您需要在调用任何 SSL/TLS 操作之前调用 Indy 的 IdOpenSSLSetLibPath() 函数。