嗨,我需要将登录标头发送到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)
打印(数据)
这是失败的代码。
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)
第二个代码不那么混乱,但是stackoverflow与idention一起使用。我想我需要在r变量中传递auth with,但是我不知道如何正确执行。我正在使用Python 2.7
答案 0 :(得分:0)
您需要对用户名和密码进行编码。
encodedUname = urllib.quote_plus(userName)
encodedPwd = urllib.quote_plus(password)
http://{encodedUname}:{encodedPwd}@{url}
答案 1 :(得分:0)
您的问题是以下两个问题之一:
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。