【问题标题】:C++ curl POST for LiFx Control用于 LiFx 控件的 C++ curl POST
【发布时间】:2015-08-16 18:38:00
【问题描述】:

我正在使用 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。

【问题讨论】:

    标签: c++ curl libcurl lifx


    【解决方案1】:

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

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

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

    【讨论】:

    • 正确使用 CURLOPT_POST 会导致帖子被发送,但它没有在“res”中返回任何内容,只是在 curl_easy_perform 处被阻止。 CURLOPT_CUSTOMREQUEST 设置为“POST”也可以,它返回了正确的响应。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2015-07-28
    • 2023-03-27
    • 2019-01-17
    • 2018-11-01
    • 1970-01-01
    • 2015-09-19
    • 2015-08-10
    • 1970-01-01
    相关资源
    最近更新 更多