2016-04-01 16 views
1

スペースに保存してください。コードの一部を投稿します。第二に、私はPythonのコーダーではありません。私は通常C#です。だから私は特にスイッチのステートメントがないことを知ったときに最善を尽くした。Lifx APIを呼び出そうとしましたが、あるケースでエラーが発生しましたが、他のケースでエラーが発生しました。

私はクラス内でLifx Cloud APIと話す方法が1つあり、うまくいきます。

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メソッドがこれらのURLを生成します。 https://api.lifx.com/v1/lights/id:d073d5127a6e/toggle

  • https://api.lifx.com/v1/lights/label:DreLight/toggle
    1. https://api.lifx.com/v1/lights/all/toggle

    私は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) 
    

    私は自分の問題点を理解していません。トークンでヘッダー情報を設定して機能させる関数はすべてのメソッドで同じですので、私はそれがそうであるとは思いません。

    2番目の目をお待ちしております。ビジネス。

    EDIT:--------------------- 答えに沿って私は与えられた方法チャートと私が入力したものに細心の注意を払うことができました。私はかなりばかげた(新しい言葉)を台無しにしました。レッスンここで子供たちはあなたがつまって戻って来るときに離れて歩いています。より多くの凝視は役に立たない。

    enter image description here

  • +1

    'ToggleLight'メソッドでは' requests.get'を呼び出していますが、スタンドアロンファイルでは 'requests.post'を使っています。あなたは 'ToggleLight'でそれを使ってみましたか? – Gerrat

    +0

    @Gerrat一日中扱った後、私は馬鹿だと感じる。あなたのコメントをあなたの正しい点を主張できるように答えに変換してください。 –

    +1

    私はあなたの痛みを感じる - 我々はすべてそこにいた:) – Gerrat

    答えて

    1

    問題は、スタンドアローンのプログラムのように、代わりにrequests.postの、ToggleLightrequest.getを呼び出すように見えます。

    関連する問題