我使用requests
调用Aruba的NBAPI以获得mobility master。他们的文档很少有Python示例。API需要一个初始身份验证来获取需要在每个get请求中引用的UID。我无法让登录在Python中工作。你知道吗
我使用的GET请求可能是问题的一部分,但我对Aruba提供的curl
示例的理解是使用默认的GET
方法。请注意,我也没有验证SSL证书,因为我的最终目标是零接触配置。你知道吗
下面是他们提供给auth的curl命令
curl --insecure -c "aruba-cookie-jar" -d "username=username&password=password" https://<url-here>:4343/v1/api/login
命令输出:
{"_global_result": {"status":"0", "status_str": "You've logged in successfully.", "UIDARUBA":"<key output here>"}}
我尝试使用“requests”将其转换为python,如下所示
import requests
session = requests.Session()
session.verify = False
r = session.get('https://<url-here>:4343/v1/api/login', auth=('username', 'password'))
我在检查响应时得到以下信息(ipython)
In [6]: r.status_code
Out[6]: 401
In [7]: print(r.text)
{"_global_result": {"status":"1", "status_str": "Unauthorized request, authentication failed"}}
这个请求我做错了什么?在Python中使用POST方法时,会产生相同的输出。我认为在Python示例中使用的auth
方法是不正确的。你知道吗
你没有提出同样的要求。用于
curl
的-d
开关发送POST数据,而不是授权头。从curl
文档中:您使用的是GET请求,而不是POST。在
data
参数中发送用户名和密码,您可以在此处使用字典将requests
句柄编码为application/x-www-form-urlencoded
格式的请求正文:一般来说,使用} manpage 以了解开关的作用,以及对HTTP头等的最低限度的了解总是值得的。你知道吗
curl
命令行示例的API文档依赖于对该工具的最低限度的熟悉,阅读^{如果有疑问,请同时使用} endpoint 与
curl
和requests
将请求发送到httpbin.org test site,并比较结果。在这里,将^{curl
一起使用可以得到:当
request
代码输出时:希望这能让我们更清楚这里的区别在哪里。你知道吗
相关问题 更多 >
编程相关推荐