[英]Take a Token with Python Requests
For the login on one of my Reoline cameras I need a token, which I can retrieve with CURL:为了登录我的 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
Delivery:送货:
[{
"cmd" : "Login",
"code" : 0,
"value" : {
"Token" : {
"leaseTime" : 3599,
"name" : "b5ada7618176225"
}
}}]
But I want to perform this token retrieval in Python and fail:但我想在 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)
I get the following error message:我收到以下错误消息:
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
It would be nice if I could find help for this.如果我能为此找到帮助,那就太好了。
Many greetings许多问候
This is my working solution:这是我的工作解决方案:
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.