Хорошо, чтобы сэкономить место Я отправлю кусочки кода. Во-вторых, я не кодер Python. Обычно я C#. Поэтому я сделал все, что в моих силах, особенно когда узнал, что не было ЗАЯВЛЕНИЯ SWITCH.Пытается вызвать Lifx API и получить ошибку в одном случае, но не в другом
Так что у меня есть один метод в моем классе, чтобы поговорить с 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
Приведенный выше код заканчивается ударять URL API: https://api.lifx.com/v1/lights/all
Я пытающегося назвать (это не единственный метод, который имеет такой же вопрос) АНИ вызов тумблер. Я попробовал несколько отличных 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/label:DreLight/toggle
- https://api.lifx.com/v1/lights/id:d073d5127a6e/toggle
- 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)
Python настолько новичок в моей жизни. Я не понимаю, в чем моя проблема. Поскольку функция, которая работает и устанавливает информацию заголовка с токеном, одинакова для каждого метода, поэтому я не думаю, что это может быть так.
Заранее благодарим за вторую пару глаз. Бизнес.
EDIT: --------------------- Чтобы согласиться с ответом, который я получил, я мог бы уделять больше внимания моей диаграмме методов и тому, что я набираю , Я испортил довольно глупо (новое слово). Урок здесь, дети, уходят, когда вы застреваете, а затем возвращаетесь. больше смотреть не помогает.
В вашем методе ToggleLight вы вызываете 'request.get', но в вашем автономном файле вы используете' request.post'. Вы пытались использовать это в «ToggleLight»? – Gerrat
@ Геррат, когда я весь день занимаюсь, я чувствую себя глупо. Пожалуйста, преобразуйте свой комментарий в ответ, чтобы вы могли заявить свои правильные баллы. –
Я чувствую вашу боль - мы все были там :) – Gerrat