@MaBa2014

Как сохранить текущую сессию python при парсинге json?

import requests

headers = {
        'Accept': 'application/json',
    }
params = (
    ('userName', 'Login'),
    ('password', 'Pass'),
    ('propertyId', '1'),
)

response = requests.get('http://ссылка на ресурс/api/Account', headers=headers, params=params)
print(" ")
print("Status code: " + str(response.status_code))
print(" ")
if response.status_code == 200:
    print("Запрос выполнен успешно")
else:
    print("Ошибка, проверьте заполненные данные и попробуйте снова")

print(" ")
print(response.json()["User"])#Выдает все данные пользователя, здесь никаких проблем
print(" ")

response = requests.get('http://этот же ресурс/api/Repair', headers=headers, params=params)
print("Status code: " + str(response.status_code))#Выдает статус 401

print(response.json())#Пишет Authorization has been denied for this request

Подскажите пожалуйста как мне сохранить текущую сессию, я так предполагаю что при 2 запросе у меня просто пропадает информация о аутентификации
Заранее извиняюсь за кривой код
  • Вопрос задан
  • 870 просмотров
Решения вопроса 1
@noremorse_ru
Ну вам конечно надо подразобраться в теории http, если это api, то скорее всего авторизация вернется токен в теле и его нужно будет добавить в headers, токенов может быть и 2, поэтому нужно смотреть документацию к апи, с которым вы общаетесь. Т.е. сессия вам тут не поможет скорее всего как таковая, она просто делает часть работы за вас, а именно хранит куки и заголовки, чтобы не подмешивать их каждый раз. Сам объект инициализируется так: requests.Session()

P.S. В print можно писать строки через запятую, а не плодить их десятками. И если вы делаете проверку по статус коду ответа, то лучше делать это через assert, ибо код будет выполняться дальше, а в вашем случае код зависит от response, продолжать что-то делать если в response не то что мы ожидаем смысла нет
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы