需要在 Ruby ala Python 的 'requests' 库 Session() 对象中保留 cookie
need to persist cookies in Ruby ala Python's 'requests' library Session() object
所以我有一个 Python 脚本可以成功地调用一系列带有 get 和 post 请求的 URL,最终生成一个我可以用于进一步工作的身份验证令牌。 Python 脚本使用 requests
库,并从 Session
对象开始,如下所示:
session = requests.Session()
initial_auth = session.request('GET', login_url)
step_2_url = do_stuff_to_initial_auth()
intermediate_token = session.request('POST', step_2_url)
step_3_url = do_stuff_to_intermediate_token()
final_auth = session.request('GET', step_3_url)
我正在尝试将脚本移植到 Ruby,但脚本在最后一步失败了 -- 远程服务 returns 一些 'Page Expired' html 而不是比 Python 脚本收到的成功页面。深入挖掘,我发现有相当数量的 cookie 状态一步一步传递,并且 Python requests.Session 对象在幕后自动处理 cookie 状态。
我正在查看 httparty
和 rest-client
的等效魔术功能。我看到了对 cookiejar 和资源的引用,但到目前为止使用 cookiejar 设置 cookie 对我不起作用。
Ruby 生态系统中是否有一种方法可以像 Python 的 requests.Session 一样自动处理多个请求的 cookie?
谢谢~~
尝试mechanize。例如:
mechanize = Mechanize.new
page = mechanize.get(url)
other_page = mechanize.get(other_url)
这会跨请求保留 cookie。
所以我有一个 Python 脚本可以成功地调用一系列带有 get 和 post 请求的 URL,最终生成一个我可以用于进一步工作的身份验证令牌。 Python 脚本使用 requests
库,并从 Session
对象开始,如下所示:
session = requests.Session()
initial_auth = session.request('GET', login_url)
step_2_url = do_stuff_to_initial_auth()
intermediate_token = session.request('POST', step_2_url)
step_3_url = do_stuff_to_intermediate_token()
final_auth = session.request('GET', step_3_url)
我正在尝试将脚本移植到 Ruby,但脚本在最后一步失败了 -- 远程服务 returns 一些 'Page Expired' html 而不是比 Python 脚本收到的成功页面。深入挖掘,我发现有相当数量的 cookie 状态一步一步传递,并且 Python requests.Session 对象在幕后自动处理 cookie 状态。
我正在查看 httparty
和 rest-client
的等效魔术功能。我看到了对 cookiejar 和资源的引用,但到目前为止使用 cookiejar 设置 cookie 对我不起作用。
Ruby 生态系统中是否有一种方法可以像 Python 的 requests.Session 一样自动处理多个请求的 cookie?
谢谢~~
尝试mechanize。例如:
mechanize = Mechanize.new
page = mechanize.get(url)
other_page = mechanize.get(other_url)
这会跨请求保留 cookie。