Python API-запрос, сессия истекла - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь перевести

    curl -k 'https://'adresse_IP':443/?\{%22request%22:%22postRequest%22\}' --data '? 
    {"request":"login","data":{"login":"user","password":"password"}}' --cookie-jar ./cookiefilename

В python (2,7)

Итак, я попробовал сначала:

   data = { 'request' : 'login', 'login' : 'user', 'password' : 'password' }
   url_token = "https://ip:443?\?\{%22request%22:%22postRequest%22\}"
   r_token = requests.post(url_token, json.dumps(data), verify=False)

, но безуспешно

  {"responseStatus":["SEX","SESSION_EXPIRED"],"reloadUserProfile":false}

Итак, я попытался решить проблему с сессией

  s = requests.Session()
  r = s.post(url_token, json.dumps(data), verify=False)

Но та же проблема

 {"responseStatus":["SEX","SESSION_EXPIRED"],"reloadUserProfile":false}

Пользователь работает в curl (bash)

Ответы [ 2 ]

1 голос
/ 26 марта 2020

Вы не установили заголовок содержимого, и вам следует использовать ключевое слово data перед json.dumps(data). Измените:

r = s.post(url_token, json.dumps(data), verify=False)

на:

headers = {'content-type': 'application/json'}
requests.post(url_token, data=json.dumps(data), headers=headers)

Ключевое слово json было введено в запросах версии 2.4.2 и будет устанавливать правильный Content-Header тоже. Так что с новыми версиями запросов вы можете сделать:

r = s.post(url_token, json=data)

Редактировать:

Я думаю, вам также нужно изменить data на следующее соответствует вашему запросу curl:

data = {"request":"login","data":{"login":"user","password":"password"}}
0 голосов
/ 27 марта 2020

Я пытался

 'https://<adresse_IP>:443'

По

data = { 'request' : 'login', 'login' : 'user', 'password' : 'password' }
    headers = {'content-type': 'application/json'}
    url_token = "https://ip:443?\?\{%22request%22:%22postRequest%22\}"
    r_token = requests.post(url_token, json.dumps(data), headers=headers, verify=False)'

Ответить

{"responseStatus":["F","REQUEST_UNDEFINED"],"reloadUserProfile":false}

Я думаю, я плохо кодирую запрос.

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