我正在尝试使用PHP打开/关闭所有Lifx灯泡。
API文档http://developer.lifx.com/表示要使用PUT请求:
curl -u "c87c73a896b554367fac61f71dd3656af8d93a525a4e87df5952c6078a89d192:" \
-X PUT \
-d "state=on" \
"https://api.lifx.com/v1beta1/lights/all/power"
现在使用该curl命令可在命令行中使用。除非我在“用户名”中冒号后添加密码,否则它会提示我输入密码。
当我尝试将该命令转换为PHP时,麻烦就是这样:
$authToken = 'c87c73a896b554367fac61f71dd3656af8d93a525a4e87df5952c6078a89d192:myFakePassword';
$ch = curl_init('https://api.lifx.com/v1beta1/lights/all/power');
$headers = array("selector=all&state=on",'Authorization: Bearer ' . $authToken);
curl_setopt($ch, CURLOPT_PUT, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
这样做,但是我得到了一个404 Not Found,Lifx文档说这可能是一个格式错误的选择器。
注意:我能够使用PHP成功调用此POST来切换电源:
$authToken = 'c87c73a896b554367fac61f71dd3656af8d93a525a4e87df5952c6078a89d192';
$ch = curl_init('https://api.lifx.com/v1beta1/lights/all/toggle');
$headers = array("selector=all",'Authorization: Bearer ' . $authToken);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
但我不想只是切换灯光,我希望能够指定开启或关闭。我的PUT请求有什么问题?
感谢您提出任何建议。
答案 0 :(得分:0)
通过设置其他一些卷曲选项来解决这个问题:
$ch = curl_init($link);
$headers = array('Authorization: Bearer ' . $authToken);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$data = "state=on";
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
$ link是https://api.lifx.com/v1beta1/lights/all/power
$ authToken是我的api密钥