Тифей с печеньем?

Мне нужно получить данные из API, который аутентифицируется с помощью файлов cookie. Вот это работает с завитком.

curl -L -s -c cookie.txt "http://api.domain.com/login" -d username="[email protected]" -d password="password"  > /dev/null

curl -b cookie.txt "http://api.domain.com/user_data?param1=value1" > output.xml

cat output.xml

Вышеупомянутое работает хорошо

Однако я не могу сделать то же самое, используя Typhoeus.

Я попробовал следующее, и он даже не аутентифицируется.

url = "http://api.domain.com/login"
cookie_file_path = "cookie.txt"
params = {param1: "value1"}
body = {username: "[email protected]", password: "password"}

request = Typhoeus::Request.new(
  url,
  method: :post,
  params: params,
  body: body,
  cookiejar: cookie_file_path,
  #headers: {Accept: "text/html"},
  verbose: true
)

response = request.run
cookies = CookieJar.new.parse(response.headers_hash["Set-Cookie"])

puts cookies # doesn't show me anything.

url = "http://api.domain.com/user_data"
cookie_file_path = "cookie.txt"
params = {output: "xml"}
body = {}

request = Typhoeus::Request.new(
  url,
  method:        :get,
  params:        params,
  body:        body,
  cookiejar: cookie_file_path,
  cookiefile: cookie_file_path,
  #headers:       {Accept: "text/html"},
  verbose: true
)

Что мне не хватает?

>>> response.code
302
>>> response.headers_hash
{"Server"=>"squid/3.1.10", "Mime-Version"=>"1.0", "Date"=>"Fri, 14 Jun 2013 02:38:28 GMT", "Content-Type"=>"text/html", "Content-Length"=>"3830", "X-Squid-Error"=>"ERR_INVALID_REQ 0", "Vary"=>"Accept-Language", "Content-Language"=>"en", "X-Cache"=>"MISS from domain.com", "X-Cache-Lookup"=>"NONE from domain.com:3128", "Via"=>"1.0 domain.com (squid/3.1.10)", "Connection"=>"close"}

person Krishna Prasad Varma    schedule 14.06.2013    source источник
comment
Я вообще не вижу «Set-Cookie» в хеше заголовка.   -  person Krishna Prasad Varma    schedule 14.06.2013
comment
привет, ты нашел решение этой проблемы?   -  person zeemy23    schedule 24.06.2013


Ответы (1)


Я бы прокомментировал, но не могу. Похоже, вы получаете перенаправление. Попробуйте добавить параметр followlocation: true:

request = Typhoeus::Request.new(
  url,
  followlocation: true, # <--
  method: :post,
  params: params,
  body: body,
  cookiejar: cookie_file_path,
  #headers: {Accept: "text/html"},
  verbose: true
)
person Ollie    schedule 07.10.2014