尝试调用 Lifx API 并在一种情况下出现错误,但在另一种情况下却没有
Trying to call Lifx API and getting Error in one case but not the other
好的,节省 space 我会 post 段代码。其次,我不是 Python 程序员。我通常是C#。所以我尽了最大努力,尤其是在发现没有 SWITCH STATEMENT 时。
所以我的 class 中有一种方法可以与 Lifx Cloud API 通信,而且效果很好。
def GetAllLifxs(self):
selector = 'all';
uri = '%s%s' % (self._baseUri, selector)
response = requests.get(uri, headers = self._headers)
result = LifxProxyResult(999, {})
if response:
result = LifxProxyResult(response.status_code, json.loads(response.text))
return result
上面的代码最终命中 API URL: https://api.lifx.com/v1/lights/all
我正在尝试调用(这不是唯一具有相同问题的方法)切换 api 调用。我尝试了几种不同的方法 selectors
仍然没有。
切换代码如下:
def ToggleLight(self, value, selectorType = 'all'):
if not selectorType == 'all':
if value == None:
raise TypeError('[value] cannot be None.')
typeSwitch = {
'id': 'id:%s' % value,
'label': 'label:%s' % value,
'group_id': 'group_id:%s' % value,
'group': 'group:%s' % value,
'location_id': 'location_id:%s' % value,
'location': 'location:%s' % value,
'scene_id': 'scene_id:%s' % value
}
#If nothing just for fun Toggle ALL lights
selector = '%s/toggle' % typeSwitch.get(selectorType, 'all')
uri = '%s%s' % (self._baseUri, selector)
response = requests.get(uri, headers = self._headers)
return response
三次尝试有一个 Response Code of 404
。 ToggleLight
方法在每种情况下都会产生这些 URLs.
- https://api.lifx.com/v1/lights/label:DreLight/toggle
- https://api.lifx.com/v1/lights/id:d073d5127a6e/toggle
- https://api.lifx.com/v1/lights/all/toggle
当我调用 ToggleLight
方法时,其中 None 有效。但这是踢球者。当我将 URLs 生成的 url 复制到这个普通的 Python 文件中时,运行 它可以正常运行并正确操纵光线。
import requests
token = "MyMagicKeyHere"
headers = {
"Authorization": "Bearer %s" % token,
}
response = requests.post('https://api.lifx.com/v1/lights/label:DreLight/toggle', headers=headers)
Python 对我来说太陌生了,我不明白我的问题是什么。由于使用令牌设置 header 信息的函数对于每种方法都是相同的,所以我不认为它可能是那样。
提前感谢第二双眼睛。业务。
编辑:--------------------
为了配合我得到的答案,我可以更仔细地关注我的方法图表和我输入的内容。我很愚蠢地搞砸了(新词)。孩子们的教训是当你被卡住然后回来时走开。多看也无济于事。
问题似乎是在 ToggleLight
中调用 request.get
,而不是像在独立程序中那样调用 requests.post
。
好的,节省 space 我会 post 段代码。其次,我不是 Python 程序员。我通常是C#。所以我尽了最大努力,尤其是在发现没有 SWITCH STATEMENT 时。
所以我的 class 中有一种方法可以与 Lifx Cloud API 通信,而且效果很好。
def GetAllLifxs(self):
selector = 'all';
uri = '%s%s' % (self._baseUri, selector)
response = requests.get(uri, headers = self._headers)
result = LifxProxyResult(999, {})
if response:
result = LifxProxyResult(response.status_code, json.loads(response.text))
return result
上面的代码最终命中 API URL: https://api.lifx.com/v1/lights/all
我正在尝试调用(这不是唯一具有相同问题的方法)切换 api 调用。我尝试了几种不同的方法 selectors
仍然没有。
切换代码如下:
def ToggleLight(self, value, selectorType = 'all'):
if not selectorType == 'all':
if value == None:
raise TypeError('[value] cannot be None.')
typeSwitch = {
'id': 'id:%s' % value,
'label': 'label:%s' % value,
'group_id': 'group_id:%s' % value,
'group': 'group:%s' % value,
'location_id': 'location_id:%s' % value,
'location': 'location:%s' % value,
'scene_id': 'scene_id:%s' % value
}
#If nothing just for fun Toggle ALL lights
selector = '%s/toggle' % typeSwitch.get(selectorType, 'all')
uri = '%s%s' % (self._baseUri, selector)
response = requests.get(uri, headers = self._headers)
return response
三次尝试有一个 Response Code of 404
。 ToggleLight
方法在每种情况下都会产生这些 URLs.
- https://api.lifx.com/v1/lights/label:DreLight/toggle
- https://api.lifx.com/v1/lights/id:d073d5127a6e/toggle
- https://api.lifx.com/v1/lights/all/toggle
ToggleLight
方法时,其中 None 有效。但这是踢球者。当我将 URLs 生成的 url 复制到这个普通的 Python 文件中时,运行 它可以正常运行并正确操纵光线。
import requests
token = "MyMagicKeyHere"
headers = {
"Authorization": "Bearer %s" % token,
}
response = requests.post('https://api.lifx.com/v1/lights/label:DreLight/toggle', headers=headers)
Python 对我来说太陌生了,我不明白我的问题是什么。由于使用令牌设置 header 信息的函数对于每种方法都是相同的,所以我不认为它可能是那样。
提前感谢第二双眼睛。业务。
编辑:-------------------- 为了配合我得到的答案,我可以更仔细地关注我的方法图表和我输入的内容。我很愚蠢地搞砸了(新词)。孩子们的教训是当你被卡住然后回来时走开。多看也无济于事。
问题似乎是在 ToggleLight
中调用 request.get
,而不是像在独立程序中那样调用 requests.post
。