Как реализовать поддержку cookie в рубине net/http?

Для встроенных систем:

Необычное поведение, о котором сообщают клиенты в поле, но который мы не можем воспроизвести.

После этого, ошибки, которые оказываются из-за странного ряда или согласия событий. Они, по крайней мере, восстанавливаемы, но очевидно им может потребоваться много времени - и большое экспериментирование - для создания происходит.

47
задан Fluffy 28 September 2009 в 12:06
поделиться

3 ответа

Взято из DZone Snippets

http = Net::HTTP.new('profil.wp.pl', 443)
http.use_ssl = true
path = '/login.html'

# GET request -> so the host can set his cookies
resp, data = http.get(path, nil)
cookie = resp.response['set-cookie'].split('; ')[0]


# POST request -> logging in
data = 'serwis=wp.pl&url=profil.html&tryLogin=1&countTest=1&logowaniessl=1&login_username=blah&login_password=blah'
headers = {
  'Cookie' => cookie,
  'Referer' => 'http://profil.wp.pl/login.html',
  'Content-Type' => 'application/x-www-form-urlencoded'
}

resp, data = http.post(path, data, headers)


# Output on the screen -> we should get either a 302 redirect (after a successful login) or an error page
puts 'Code = ' + resp.code
puts 'Message = ' + resp.message
resp.each {|key, val| puts key + ' = ' + val}
puts data

update

#To save the cookies, you can use PStore
cookies = PStore.new("cookies.pstore")

# Save the cookie  
cookies.transaction do
  cookies[:some_identifier] = cookie
end

# Retrieve the cookie back
cookies.transaction do
  cookie = cookies[:some_identifier] 
end
33
ответ дан 26 November 2019 в 19:33
поделиться

Я использовал Curb и Mechanize для аналогичного проекта. Просто включите поддержку файлов cookie и сохраните файлы cookie во временном хранилище файлов cookie ... Если вы используете net / http или пакеты без встроенной поддержки файлов cookie, вам нужно будет написать собственную обработку файлов cookie.

3
ответ дан 26 November 2019 в 19:33
поделиться

Вы можете отправлять принимающие куки, используя заголовки.

Вы можете сохранить заголовок в любой среде сохранения. Будь то база данных или файлы.

1
ответ дан 26 November 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: