在连续的获取请求中保持 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¶m2=bar
request = RestClient.get url, :content_type => :json, :accept => :json
cookies = request.cookies
# second request
url = "http://example-api.com/second-endpoint?param1=foo¶m2=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)
我是 运行 一个脚本,需要使用 RestClient gem.
对 API 执行多个 GET 请求但是,此 API 需要保留 cookie 和会话才能正常运行。
我有这个:
# first request
url = "http://example-api.com/first-endpoint?param1=foo¶m2=bar
request = RestClient.get url, :content_type => :json, :accept => :json
cookies = request.cookies
# second request
url = "http://example-api.com/second-endpoint?param1=foo¶m2=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)