Philips Hue API CURL PUT запрос возвращает странную ошибку

Итак, я пишу милое маленькое веб-приложение, которое позволяет мне контролировать мои различные системы освещения из любой точки мира, и все идет отлично. Просто попробуйте немного поработать с API Philips Hue.

Я могу сделать запрос PUT нормально, и я получаю много данных обратно, но меня немного смущает ошибка, возникающая при выполнении следующего кода:

$ch = curl_init();

$body = json_encode(array("on" => true));
// Translates to String '{"on":true}'

$fp = fopen('php://temp/maxmemory:256000', 'w');
fwrite($fp, $body);
fseek($fp, 0);

curl_setopt($ch, CURLOPT_URL, 'https://client-eastwood-dot-hue-prod-us.appspot.com/api/0/lights/1');
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, strlen($body));
curl_setopt($ch, CURLOPT_HTTPHEADER, array
(
"Content-Type: application/json;charset=UTF-8",
"X-Token: $Token"));

curl_exec($ch);
curl_close($ch);

Обратите внимание на решение для файла данных из этот ответ

Ошибка получается следующим образом:

[{"error":
{
"type":7,
"address":"/lights/3/state/on",
"description":"invalid value,  false }, for parameter, on"}}]

Я знаю, что это синтаксическая ошибка с $body довольны, но я не могу понять, что именно не так. Я пытался отправить true через строку и попытался отправить 1 как целое число и строка, но все возвращается с той же ошибкой (замена false за то, что отправлено, очевидно).

Могу оценить некоторую помощь 🙂
ура

1

Решение

Ой, я понял, в чем проблема!

По какой-то причине json_encode ставил кавычки true, false и цифры. Исправлено с небольшим preg_replace и это работает! : D

$body = preg_replace("/:\"([0-9]+|true|false)\"/", ":$1",
json_encode(array("on" => true))
);
0

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

Других решений пока нет …

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