所以我正在编写一个不错的小网络应用程序,它可以让我从任何地方控制我的各种照明系统,而且效果很好。飞利浦 Hue API 只是遇到了一点问题。
我可以很好地发出 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
显然,替换发送的任何内容)。
不胜感激 :)
干杯