用于LiFx控件的C ++ curl POST

时间:2015-06-02 19:36:45

标签: c++ curl libcurl lifx

我正在使用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 request for LIFX Power On/Off),但没有运气,它仍会返回CURLE_URL_MALFORMAT。

1 个答案:

答案 0 :(得分:1)

那里错误地使用了

CURLOPT_POST。它应该只设置为0或1。您使用CURLOPT_URL设置了网址。

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

为了模仿命令行更近,您可以跳过CURLOPT_POST并将CURLOPT_CUSTOMREQUEST设置为“POST”