попытка POST с рубиновым механизмом

Я перехватил HTTP-заголовки входа в систему, используя плагин Firefox LiveHTTPheaders.

Я нашел следующий URL и переменные.

POST /login
email=myemail%40gmail.com&password=something&remember=1&loginSubmit=Login

И вот код, который я запускаю:

require 'rubygems'
require 'mechanize'


browser = Mechanize.new
browser.post('http://www.mysite.com/login',
[
["email","myemail%40gmail.com"],
["password","something"],
["remember","1"],
["loginSubmit","Login"],
["url"=>""]
]
) do |page|
puts page.body
end

Однако это ничего мне не дает! что-то не так с параметрами моего поста?


person KJW    schedule 28.08.2010    source источник


Ответы (1)


post() не принимает блок. Попробуй это:

page = browser.post('http://www.mysite.com/login', {
  "email" => "myemail%40gmail.com",
  "password" => "something",
  "remember" => "1",
  "loginSubmit" => "Login",
  "url" => ""
})

редактировать: изменено для точности

person cam    schedule 28.08.2010
comment
хм, я не видел, чтобы сообщение использовалось с блоком раньше. это не кажется действительным при просмотре документов/источника. как насчет: page = browser.post(...). Или как я обычно это делаю browser.post(...); browser.page.do_stuff - person cam; 28.08.2010
comment
О, также я видел, что ваш синтаксис вложенного массива в порядке в соответствии с документацией. Я все еще думаю, что хэш выглядит лучше, хотя;) - person cam; 28.08.2010
comment
+1, get поддерживает блок, а post нет. Вы можете увидеть это здесь: github.com/tenderlove/mechanize/blob/ master/lib/mechanize.rb. @cam, ты должен отредактировать свой ответ, чтобы он говорил правильно. - person ; 28.08.2010