2016-08-08 3 views
0

Я запускаю скрипт, который должен выполнить несколько запросов GET в API с использованием драгоценного камня RestClient.Персистентная сессия/файлы cookie через последовательные запросы на получение

Однако для этого API требуется куки-файлы & сеанс для правильной работы.

У меня есть это:

# 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 

Для того, чтобы сделать второй запрос работу, мне нужно держать ту же сессию и куки. Использование RestClient, я могу отправить обратно печенье в запросе POST, как это:

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

Но я не мог найти в своей документации & на StackOverflow способ сделать это для запроса GET.

Как перейти к «сохранению» файлов cookie между двумя последовательными запросами GET? Я также открыт для использования другого драгоценного камня или техники, если RestClient не поддерживает это.

Любая помощь будет очень признательна!

ответ

0

Я попытался это:

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

И это, кажется, работает хорошо!

1

Обратите внимание, что если вы хотите получить более полную поддержку файлов cookie в последних версиях rest-client (> = 2.0.0), вы можете использовать фактический кук-файл cookie (HTTP::CookieJar), который ведет себя гораздо больше, как браузер в следующем сроке действия/domain/path ограничения.

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

resp2 = RestClient::Request.execute(url: someurl, method: :get, cookies: jar) 
Смежные вопросы