C++ curl POST for LiFx Control

C++ curl POST for LiFx Control

本文关键字:LiFx Control for POST curl C++      更新时间:2023-10-16

我正在使用curl与c++成功列出所有灯泡

curl_easy_setopt(curl,CURLOPT_USERNAME, MY_API_key);
curl_easy_setopt(curl, CURLOPT_URL, "https://api.lifx.com/v1beta1/lights/all/");
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &Data);
res = curl_easy_perform(curl);

要将电源切换为全亮,文档http://developer.lifx.com/#toggle-power说要使用

curl -u "c87c73a896b554367fac61f71dd3656af8d93a525a4e87df5952c6078a89d192:" -X POST "https://api.lifx.com/v1beta1/lights/all/toggle"

我已经通过预构建的curl二进制测试过了,它工作得很好。我不知道如何在c++代码中构造POST格式。

curl_easy_setopt(curl,CURLOPT_USERNAME, MY_API_key);
curl_easy_setopt(curl,CURLOPT_POST,"https://api.lifx.com/v1beta1/lights/all/toggle");
curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER, FALSE);
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl,CURLOPT_WRITEDATA, &Data);
res = curl_easy_perform(curl);

然而,res返回CURLE_URL_MALFORMAT,我认为这是因为我没有设置CURLOPT_URL属性…但我不确定它需要设置成什么。

我尝试使用类似的格式这个PHP问题(PHP HTTP CURL PUT请求LIFX电源打开/关闭),但没有运气,它仍然返回CURLE_URL_MALFORMAT。

CURLOPT_POST在这里使用错误。它应该只设置为0或1。使用CURLOPT_URL设置URL。

您可以使用--libcurl sample.c添加到您的(工作)curl命令行中,以获得一个很好的示例源代码。

为了更接近地模拟命令行,您可以跳过CURLOPT_POST,只将CURLOPT_CUSTOMREQUEST设置为"POST"