Как установить политику повара ie в Python3? - PullRequest
1 голос
/ 07 мая 2020

Я использую python 3.8. Я пытаюсь использовать библиотеку Zeep для использования ресурса компании SOAP. Услуга SOAP устарела и не будет обновляться в ближайшее время. Одна из проблем с этим заключается в том, что служба устанавливает «идентификатор сеанса» в ответе cook ie. Он устанавливает теперь устаревший заголовок set-cookie2.

    from requests import Session
    from zeep import Client, Settings
    from zeep.cache import SqliteCache
    from zeep.transports import Transport

    my_session = Session()
    my_settings = Settings(strict=False)
    my_cache = SqliteCache()
    my_url = 'https://lists.mycompany.com/lists/wsdl'

    client = Client(
        my_url,
        transport=Transport(
            session=my_session,
            cache=my_cache
        ),
        settings=my_settings
    )
    ...

Я вижу объект cook ie в my_session. Это RequestsCookieJar, и я не могу понять, как установить значения политики cook ie. В отладчике pycharm я вижу, что my_session.cookies имеет «Защищенные атрибуты», и один из них - _policy, который является объектом DefaultCookiePolicy. Я вижу, что hide_cookie2 имеет значение False (значение по умолчанию и то, что мне нужно), но что rfc2965 также имеет значение False и должно быть установлено в True.

В классе RequestsCookieJar я вижу get_policy() метод, но ничего для установки политики. Мне где-то не хватает связи. Как установить политику Cook ie для всего приложения или для каждого запроса?

1 Ответ

1 голос
/ 11 мая 2020

ну, вы можете переопределить свойства DefaultCookiePolicy следующим образом:

from http.cookiejar import DefaultCookiePolicy
from requests import Session

myCookiePolicy=DefaultCookiePolicy(rfc2965=True)

my_session = Session()
my_session.cookies.set_policy(policy=myCookiePolicy)

надеюсь, что это поможет.

...