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 メソッドには、ユーザー名とパスワードの 2 つのパラメーターが必要です。1 つを省略すると、エラーが発生します。次のように記述しようとしましたこの「req.basic_auth 'username ', ''」ですが、それでもログインできません。

誰か親切にヒントをくれませんか?

詳細: req.basic_auth 'username', '' も試しましたが、機能していないようです。これは、この行の直後に別の行があり、基本的に自動フォーム送信を行っているためです。x = Net::HTTP.post_form(URI.parse("http://localhost/NewTask.aspx"), params) put x.body

そして、プットの結果は、ログインページの本文へのリダイレクトで返されました。

4

1 に答える 1

0

rubymechanizegemの使用を検討できます。ログインの例は(公式サイトから)はるかに簡単になります。この例では、エージェント証明書と秘密鍵を実行する必要はありません。

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 に答える