PHP HTTP CURL PUT请求LIFX电源打开/关闭



我正在尝试使用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请求可能有什么问题?

谢谢你的建议。

通过设置其他curl选项来解决这个问题:

$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 is https://api.lifx.com/v1beta1/lights/all/power

$authToken是我的api key

最新更新