1

我正在使用 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 问题(LIFX Power On/Off 的 PHP HTTP CURL PUT 请求)类似的格式,但没有运气,它仍然返回 CURLE_URL_MALFORMAT。

4

1 回答 1

1

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

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

为了更接近地模拟该命令行,您可能可以跳过 CURLOPT_POST 并将CURLOPT_CUSTOMREQUEST设置为“POST”

于 2015-06-03T07:59:17.247 回答