Python - запрос: сохранение сеанса входа в систему через функции - PullRequest
0 голосов
/ 27 июня 2018

Я хочу использовать сеанс входа в систему в другой функции, но она не работает. Я использую Python 2.7 и модуль запросов. сервер является коммерческим веб-интерфейсом.

def add_device(s, argv):
    headers = {'Content-Type': 'application/json; charset=UTF-8', 'Accept': 'application/json'}
    url = 'https://lvgwatchit01t.***.**/watchit/ui/index.php/wapi/inventory/object?Type=Device'
    s.verify = False
    p = req.Request('PUT', url, json = argv, headers = headers, cookies = sessioncookie).prepare()
    r = s.send(p)
    rc = r.status_code
    print r.text
    return rc


# login routine
s = req.Session()
headers = {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
data = {'username':'***', 'password':'***'}
url = 'https://lvgwatchit01t.***.**/watchit/ui/index.php/user/login'
s.verify = False
p = req.Request('POST', url, data = data, headers = headers).prepare()
r = s.send(p)
parsed_json = json.loads(r.text)
rc = parsed_json['RC']
msg = parsed_json['MSG']
sessioncookie = r.cookies
if rc == "0":
    print msg
    add_device(s, data_add_device)
else:
    print msg
    sys.exit(1)

выход:

DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): lvgwatchit01t.***.**:443
DEBUG:urllib3.connectionpool:https://lvgwatchit01t.***.**:443 "POST /watchit/ui/index.php/user/login HTTP/1.1" 200 106
You were successfully logged in!
/usr/lib/python2.7/site-packages/urllib3/connectionpool.py:857: 
DEBUG:urllib3.connectionpool:https://lvgwatchit01t.***.**:443 "PUT /watchit/ui/index.php/wapi/inventory/object?Type=Device HTTP/1.1" 200 1131
{"DATA":...}],"META":{"RC":0,"MSG":"OK"}}

как получить сеанс входа во вторую функцию?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

после добавления cookie сессии все работает нормально. код обновлен в исходном сообщении.

0 голосов
/ 27 июня 2018

Вы передаете аргумент s, но вы снова устанавливаете переменную. Таким образом, вы потеряли содержимое переменной s, и вам нужно снова сделать запрос с учетными данными. Я думаю, вам нужно удалить только первую строку add_device(s, argv)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...