Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 9, 2014 12:34:35

_alexs_
Зарегистрирован: 2012-04-02
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Requests: не применяются параметры авторизации

Использую библиотеку Requests для взамодействия с сервисом. Для удобства работы сделал класс-обертку, упрощенный код ниже

class MyWrapper:
    def __init__(self, url):
        self.url = url
        self.session = requests.Session()
   
    def setAuth(self, user, passwd):
        self.session.auth = (user, passwd)
    def doSomething(self, url, param):
        self._qry(url, 'POST', param)
    
    def _qry(self, url, method, params):
        req = requests.Request(method, url, params)
        prep = req.prepare()
        resp = self.session.send(prep)

Проблема в том, что установленные свойства у self.session (например, self.session.auth) не используются при посылке запросов в методе _qry(). Но если при создании запроса явно указать параметры авторизации
 req = requests.Request(method, url, params, auth=self.session.auth)

то все работает. В чем может быть проблема, почему не подхватывается авторизация, заданная на уровне сессии?

Отредактировано _alexs_ (Окт. 9, 2014 13:49:36)

Офлайн

#2 Окт. 9, 2014 12:38:51

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Requests: не применяются параметры авторизации

def doSomething(url, param):

А self где?



Офлайн

#3 Окт. 9, 2014 13:50:13

_alexs_
Зарегистрирован: 2012-04-02
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Requests: не применяются параметры авторизации

FishHook
def doSomething(url, param):А self где?
Пропустил при наборе поста, бывает. Начальное сообщение поправил

Офлайн

#4 Окт. 10, 2014 14:19:02

bs0d
Зарегистрирован: 2014-02-01
Сообщения: 76
Репутация: +  2  -
Профиль   Отправить e-mail  

Requests: не применяются параметры авторизации

_alexs_
В чем может быть проблема, почему не подхватывается авторизация, заданная на уровне сессии?
А Вы self.setAuth вызываете перед отправкой запроса? о_О
И сделайте так:
prep = req.prepare()
меняем на:
prep = self.session.prepare_request(req)

Отредактировано bs0d (Окт. 10, 2014 14:27:10)

Офлайн

#5 Окт. 12, 2014 11:12:08

_alexs_
Зарегистрирован: 2012-04-02
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Requests: не применяются параметры авторизации

bs0d
А Вы self.setAuth вызываете перед отправкой запроса? о_О
Конечно.
bs0d
И сделайте так:
prep = req.prepare()
меняем на:
prep = self.session.prepare_request(req)
Спасибо, так работает.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version