我使用python-请求模块来处理OAuth的请求和响应。 我想设置收到的access_token(响应内容字典 )在requests.session.cookies
对象。
我怎样才能从服务器接收到的响应更新会话的现有饼干?
[编辑]
self.session = requests.session(auth=self.auth_params)
resp = self.session.post(url, data=data, headers=self.headers)
content = resp.content
我想要做的事,如:
requests.utils.dict_from_cookiejar(self.session.cookies).update(content)
在这里, requests.utils.dict_from_cookiejar(self.session.cookies)
返回字典一个会话密钥。 现在,我要更新已接收响应内容self.session.cookies
。
requests
可以为你做的,只要你告诉它所有的requests
你做是相同的部分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'...
后续请求使用由s.get
或s.post
将重新使用和更新的cookie发送回客户端服务器。
要对自己添加一个Cookie到一个请求 ,你只需通过饼干参数添加它。
>>> s.get('https://www.google.com', cookies = {'cookieKey':'cookieValue'})
除非服务器所提供的cookie发送回一个新值,该会议将不会保留提供的cookie。
此代码为我工作。 希望它可以帮助别人。
我想更新session.cookies从POST请求收到响应值变量。 所以,同样的请求值可以在另一篇文章中使用/ get请求。
在这里,我所做的:
1)更新请求模块1.0.3版本。
2)创建的2个功能
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)
为了提供自己一个cookie来请求模块可以使用的cookies参数对单个请求 ,并给它cookie罐或类似字典包含cookie(一个或多个)对象。
>>> import requests
>>> requests.get('https://www.example.com', cookies {'cookieKey':'cookieValue'})
但是,如果你想保留所提供的饼干 ,而不必设置的Cookie参数每次,你可以使用一个会话reqests您还可以传递给其他funtions,使他们能够使用和更新同样的Cookie:
>>> session = requests.session()
>>> session.cookies.set('cookieKey', 'cookieName')
# In order to avoid cookie collisions
# and to only send cookies to the domain / path they belong to
# you have to provide these detail via additional parameters
>>> session.cookies.set('cookieKey', 'cookieName', path='/', domain='www.example.com')