在连续的获取请求中保持 session/cookies

Persist session/cookies across successive get requests

我是 运行 一个脚本,需要使用 RestClient gem.

对 API 执行多个 GET 请求

但是,此 API 需要保留 cookie 和会话才能正常运行。

我有这个:

# first request
url = "http://example-api.com/first-endpoint?param1=foo&param2=bar
request = RestClient.get url, :content_type => :json, :accept => :json
cookies = request.cookies

# second request
url = "http://example-api.com/second-endpoint?param1=foo&param2=bar
request = RestClient.get url, :content_type => :json, :accept => :json

为了使第二个请求有效,我需要保持相同的会话和 cookie。使用 RestClient,我可以像这样在 POST 请求中发回 cookie:

RestClient.post post_url, {}, {:cookies => cookies}

但我无法在他们的文档和 Whosebug 上找到任何方法来为 GET 请求执行此操作。

我应该如何 "keep" 在两个连续的 GET 请求之间激活 cookie?如果 RestClient 不支持,我也愿意使用另一种 gem 或技术。

任何帮助将不胜感激!

我试过这个:

RestClient.get url,{:cookies => cookies}

它似乎运行良好!

请注意,如果您想要更全面的 cookie 支持,在最新版本的 rest-client (>= 2.0.0) 中,您可以使用实际的 cookie jar (HTTP::CookieJar),它的行为更像是遵循到期/域/路径限制的浏览器。

resp = RestClient.get(url)
jar = resp.cookie_jar

resp2 = RestClient::Request.execute(url: someurl, method: :get, cookies: jar)