用于 LiFx 控件的 C++ curl POST

C++ curl POST for LiFx Control

我正在使用 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 returns CURLE_URL_MALFORMAT,我想这是因为我没有设置 CURLOPT_URL 属性...但是我不确定是什么需要设置为。

我尝试使用与此 PHP 问题 () 类似的格式,但没有成功,它仍然 returns CURLE_URL_MALFORMAT.

CURLOPT_POST is wrongly used there. It should be set to 0 or 1 only. You set the URL with CURLOPT_URL.

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

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