LIFX 电源开/关的 PHP HTTP CURL PUT 请求
Posted
技术标签:
【中文标题】LIFX 电源开/关的 PHP HTTP CURL PUT 请求【英文标题】:PHP HTTP CURL PUT request for LIFX Power On/Off 【发布时间】:2015-07-28 20:16:12 【问题描述】:我正在尝试使用 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 请求可能有什么问题?
感谢您的任何建议。
【问题讨论】:
【参考方案1】:通过设置其他一些 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 是 https://api.lifx.com/v1beta1/lights/all/power
$authToken 是我的 api 密钥
【讨论】:
以上是关于LIFX 电源开/关的 PHP HTTP CURL PUT 请求的主要内容,如果未能解决你的问题,请参考以下文章
PHP curl 模拟 请求 中我添加 Authorization 认证 但是这个认证内容我接受不到 没有开安全模式 何解?