Отправить логин заголовки Python 2.7 - PullRequest
0 голосов
/ 28 февраля 2019

Привет! Мне нужно отправить заголовки для входа в sigfox.Однако они всегда отклоняются, или код завершается ошибкой, когда я вставляю переменную auth в вызов.

Это код, который работает, но отклоняет его.

print 'end of the dummy'
devices = requests.get("https://api.sigfox.com/v2/devices", auth=(API_USER, API_PWD)).json()
r = requests.get('https://api.sigfox.com/v2/devices', data=users, stream=True)
data = r.raw.read(r)

print (data)

И этот код не работает.

credentials = b64encode(b"somebase64string:somebase64string").decode("ascii")
headers = { 'Authorization' : 'Basic %s' %  credentials }


print 'end of the dummy'
devices = requests.get("https://api.sigfox.com/v2/devices", auth=(API_USER, API_PWD)).json() r = requests.get('https://api.sigfox.com/v2/devices', auth=credentials, data=users, stream=True) data = r.raw.read(r)


print(data) 

Второй код менее запутанный, но стековый поток работает с идентификатором.Я думаю, что мне нужно передать auth с переменной r, но я не могу понять, как я это делаю правильно.Я использую Python 2.7

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

ваша проблема одна из двух:

  1. вам нужно сделать запрос POST вместо GET, так как я вижу, что вы должны отправлять данные в теле, а не как параметры в запросе.
  2. вы должны правильно использовать GET api: requests.get(url, params=None, **kwargs)

это сигнатура функции из интерфейса разработчика.поэтому вы должны заменить r = requests.get('https://api.sigfox.com/v2/devices', data=users, stream=True) на r = requests.get('https://api.sigfox.com/v2/devices', params=users, stream=True)

, но я настоятельно считаю, что это должен быть запрос POST, а не GET.

0 голосов
/ 28 февраля 2019

Вам необходимо кодировать ИД пользователя и пароль.

encodedUname = urllib.quote_plus(userName)
encodedPwd = urllib.quote_plus(password)
http://{encodedUname}:{encodedPwd}@{url}
...