试图调用Lifx API并在一个案例中获取错误而不是另一个案例

时间:2016-04-01 02:12:33

标签: python lifx

好的节省空间我会发布代码片段。其次,我不是Python编码器。我通常是C#。所以我尽力而为,特别是当发现没有SWITCH STATEMENT时。

所以我在课堂上有一个方法可以与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网址:https://api.lifx.com/v1/lights/all

我试图调用(这不是唯一具有相同问题的方法)toggle 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方法都会生成这些URL。

  1. https://api.lifx.com/v1/lights/label:DreLight/toggle
  2. https://api.lifx.com/v1/lights/id:d073d5127a6e/toggle
  3. https://api.lifx.com/v1/lights/all/toggle
  4. 当我调用ToggleLight方法时,它们都不起作用。但这里是踢球者。当我将URL生成的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对我来说是新的,我不明白我的问题是什么。由于使用令牌工作和设置标头信息的功能对于每个方法都是相同的,所以我认为不是这样。

    提前感谢第二双眼睛。业务。

    编辑:--------------------- 为了得到我给出的答案,我可以更加关注我的方法图表和我输入的内容。我非常愚蠢地搞砸了(新词)。在这里,当你遇到困难然后回来时,孩子们会走开。更多的凝视并没有帮助。

    enter image description here

1 个答案:

答案 0 :(得分:1)

问题似乎是在request.get而不是ToggleLight中调用requests.post,就像在独立程序中一样。