0

http://ruby-doc.org/stdlib-1.8.7/libdoc/net/http/rdoc/Net/HTTP.html

在仔细阅读文档后,我正在为我的程序的自动登录功能编写以下代码片段:

url = URI.parse('http://localhost/login.aspx')
req = Net::HTTP::Post.new(url.path)
req.basic_auth 'username'

目标页面只询问正确的用户名,登录不需要密码,basic_auth方法需要两个参数,用户名和密码,如果我漏掉一个,我会得到错误,我试着写成这样这个“ req.basic_auth '用户名',''”,但我仍然无法登录。

任何人都可以给我一个提示吗?

更多信息:我也尝试了 req.basic_auth 'username', '',它似乎没有工作,我知道这一点,因为在这之后还有另一行,基本上是自动提交表单。x = Net::HTTP.post_form(URI.parse("http://localhost/NewTask.aspx"), params) puts x.body

并且 puts 结果与重定向到登录页面正文一起返回。

4

1 回答 1

0

您可以考虑使用ruby​​ mechanize gem。登录示例会简单得多(来自官方网站),对于这个,您不需要做代理证书和私钥的事情:

require 'rubygems'
require 'mechanize'

# create Mechanize instance
agent = Mechanize.new

# set the path of the certificate file
agent.cert = 'example.cer'

# set the path of the private key file
agent.key = 'example.key'

# get the login form & fill it out with the username/password
login_form = agent.get("http://example.com/login_page").form('Login')
login_form.Userid = 'TestUser'
login_form.Password = 'TestPassword'

# submit login form
agent.submit(login_form, login_form.buttons.first)
于 2012-05-08T02:52:34.710 回答