C ++ curl POST для управления 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, он работает нормально. Я не могу понять, как построить формат POST в коде C ++.

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.

1

Решение

CURLOPT_POST неправильно используется там. Он должен быть установлен только на 0 или 1. Вы устанавливаете URL с помощью CURLOPT_URL.

Вы могли бы использовать --libcurl sample.c добавлен в вашу (рабочую) командную строку curl, чтобы получить хороший пример исходного кода.

Чтобы подражать этой командной строке ближе, вы можете пропустить CURLOPT_POST и просто CURLOPT_CUSTOMREQUEST установить на «POST»

1

Другие решения


По вопросам рекламы [email protected]