5

python-requestsモジュールを使用してoAuthリクエストとレスポンスを処理しています。受信したaccess_token(応答コンテンツをdictとして)をrequests.session.cookiesオブジェクトに設定したい。

サーバーから受信した応答でセッションの既存のCookieを更新するにはどうすればよいですか?

[編集]

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)

ここでは、1つのセッションキーでdictrequests.utils.dict_from_cookiejar(self.session.cookies)を返します。ここで、で受信した応答コンテンツを更新したいと思います。self.session.cookies

4

3 に答える 3

3

requestsrequestsあなたが作るすべてが同じの一部であるとあなたが言うならば、あなたのためにそれをすることができます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'...

サーバーがクライアントに送り返したCookieを使用してs.get、またはs.post 再利用して更新する後続のリクエスト。


単一のリクエストに独自にCookieを追加するには、cookiesパラメータを使用してCookieを追加するだけです。

>>> s.get('https://www.google.com', cookies = {'cookieKey':'cookieValue'})

サーバーが提供されたCookieの新しい値を返送しない限り、セッションは提供されたCookieを保持しません。

于 2012-12-20T12:03:40.123 に答える
1

このコードは私のために働いた。それが他の誰かに役立つことを願っています。

postリクエストから受信した応答値で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)
于 2012-12-21T12:33:57.047 に答える
1

モジュールに自分でCookieを提供するには、単一のリクエストrequestsにCookieパラメータを使用して、CookiejarまたはCookieを含むオブジェクトのようなdictを指定します。

>>> import requests
>>> requests.get('https://www.example.com', cookies {'cookieKey':'cookieValue'})

ただし、提供されたCookieを毎回設定せずに保持したい場合は、他の機能に渡すこともできるreqestsセッションを使用して、同じ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')
于 2018-06-11T18:06:14.403 に答える