ejemplo - Actualizar cookies en sesión usando el módulo python-requests
python requests session close (2)
Estoy usando el módulo python-requests para manejar solicitudes y respuestas de OAuth. Quiero establecer el access_token recibido (el contenido de la respuesta como dict ) en el objeto requests.session.cookies
.
¿Cómo puedo actualizar las cookies existentes de la sesión con la respuesta recibida del servidor?
[EDITAR]
self.session = requests.session(auth=self.auth_params)
resp = self.session.post(url, data=data, headers=self.headers)
content = resp.content
Quiero hacer algo como:
requests.utils.dict_from_cookiejar(self.session.cookies).update(content)
Aquí, requests.utils.dict_from_cookiejar(self.session.cookies)
devuelve dict con una clave de sesión. Ahora, deseo actualizar el contenido de respuesta recibido en self.session.cookies
.
requests
pueden hacer eso por usted, siempre que diga que todas las requests
que hace son parte de la misma session
:
>>> import requests
>>> s = requests.session()
>>> s.get(''https://www.google.com'')
<Response [200]>
>>> s.cookies
<<class ''requests.cookies.RequestsCookieJar''>[Cookie(version=0, name=''NID''...
Las solicitudes posteriores realizadas utilizando s.get
o s.post
reutilizarán las cookies.
Para agregar una Cookie por su cuenta, simplemente la debe agregar a su próxima solicitud, se conservará en su sesión para las siguientes solicitudes:
>>> s.get(''https://www.google.com'', cookies = {''cookieKey'':''cookieValue''})
Este código funcionó para mí. Espero que pueda ayudar a alguien más.
Deseo actualizar la variable sessioncookies con los valores de respuesta recibidos de la solicitud posterior. por lo tanto, el mismo valor de solicitud se puede usar en otra solicitud de publicación / obtención.
aquí, lo que hice:
1) modificó el módulo de solicitudes a la versión 1.0.3.
2) creó 2 funciones
session = requests.session()
def set_SC(cookie_val):
for k,v in cookie_dict.iteritems():
if not isinstance(v, str):
cookie_dict[k] = str(v)
requests.utils.add_dict_to_cookiejar(session.cookies,
cookie_val)
def get_SC():
return requests.utils.dict_from_cookiejar(session.cookies)
In another function:
setSC(response.content)