python - 使用 Python 请求获取令牌
问题描述
为了登录我的一台 Reoline 相机,我需要一个令牌,我可以使用 CURL 检索它:
curl -d '[{"cmd": "Login", "action": 0, "param": {"User": {"userName": "admin", "password": "XXX"}}}]' 10.0.1.241/cgi-bin/api.cgi?cmd=Login&token=null
送货:
[{
"cmd" : "Login",
"code" : 0,
"value" : {
"Token" : {
"leaseTime" : 3599,
"name" : "b5ada7618176225"
}
}}]
但我想在 Python 中执行这个令牌检索并失败:
import requests
url_WZ = 'http://10.0.1.241/cgi-bin/api.cgi?cmd=Login'
payload = [{"cmd": "Login", "action": 0, "param": {"User": {"userName": "admin", "password": "XXX"}}}]
r = requests.post(url=url_WZ, params=payload)
我收到以下错误消息:
Traceback (most recent call last):
File "/Users/hubobel/Documents/Python/HubobelsPython/Reolink.py", line 8, in <module>
r = requests.post(url=url_WZ, params=payload)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py", line 112, in post
return request('post', url, data=data, json=json, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py", line 499, in request
prep = self.prepare_request(req)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/sessions.py", line 431, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/models.py", line 303, in prepare
self.prepare_url(url, params)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/models.py", line 421, in prepare_url
enc_params = self._encode_params(params)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/models.py", line 97, in _encode_params
for k, vs in to_key_val_list(data):
ValueError: too many values to unpack (expected 2)
Process finished with exit code 1
如果我能为此找到帮助,那就太好了。
许多问候
解决方案
这是我的工作解决方案:
import requests
url_WZ = 'http://10.0.1.241/cgi-bin/api.cgi?cmd=Login'
payload = '[{"cmd": "Login", "action": 0, "param": {"User": {"userName": "admin", "password": "XXX"}}}]'
r = requests.post(url=url_WZ, data=payload)
data = r.json()
print(data)
推荐阅读
- windows - 杰基尔 3.8.4 | 错误:文件存在@dir_s_mkdir - /jekyll/app/_site/tag/mytags
- python - 如何在 PyCharm 中导入海龟?不断收到错误
- docker - Docker Swarm:如何删除停止的容器
- azure - 如何从 URL 中提取特定的子目录名称
- xslt - XSLT for-each 命名空间
- java - 需要有关制作包含 TableView 和 ScrollPane 的布局的建议
- javascript - 需要 HTMLElement API:与 IE6+ 等效的 click()
- android - 是否可以下载已编译的 c++ 二进制文件并在 iOS 上运行时加载它?
- swift - Swift - 如何限制几个特定的文本字段只允许插入 int?
- python - 在 Dockerfile 上运行安装 python 包