简体   繁体   English

使用 Python 请求获取令牌

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM