首页 > 解决方案 > 使用 Python 请求模块登录 Robinhood

问题描述

我正在尝试使用以下方法登录 Robinhood API:

import requests

def login():
   u = "myusername"
   p = "mypassword"
   url = "https://api.robinhood.com/api-token-auth/"   
   r = requests.get(url, username=u, password=p)
   #r = requests.get(url)
   return r.text

print login()

我有办法在 Curl 中做到这一点:

'curl -v https://api.robinhood.com/api-token-auth/ -H "Accept: application/json" -d "username='+username+'&password='+password+'"'  

使用 Python 请求时,我收到以下错误:

Traceback (most recent call last):
  File "rhood.py", line 12, in <module>
    print login()
  File "rhood.py", line 8, in login
    r = requests.get(url, username=u, password=p)
  File "C:\Python27\Lib\site-packages\requests\api.py", line 75, in get
    return request('get', url, params=params, **kwargs)
  File "C:\Python27\Lib\site-packages\requests\api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
TypeError: request() got an unexpected keyword argument 'username'

标签: pythoncurlpython-requests

解决方案


您需要创建一个字典,其中包含您希望随请求一起发送的参数(参见data下面的代码)。然后使用json参数将字典包含在您的请求中。

另请注意,Robinhood API 文档似乎表明需要 POST 请求,而不是 GET 请求。因此,下面的代码使用requests.post(...).

import requests

def login():
   u = "myusername"
   p = "mypassword"
   url = "https://api.robinhood.com/api-token-auth/"   
   data = {"username": u, "password": p}
   r = requests.post(url, json=data)
   return r.text

print login()

推荐阅读