1
submit_form = agent.get("http://sample.com/NewTask.aspx").form("aspnetForm") do |f|
    f["ctl00$ContentPlaceHolder1$txtNumber"] = "1234",
    f["ctl00$ContentPlaceHolder1$cmbText"] = "test",
    f["ctl00$ContentPlaceHolder1$FUpload$fu"] = "",
    f["ctl00$ContentPlaceHolder1$btn"] = "test"
    f.submit(f.button_with(:name => "ctl00$ContentPlaceHolder1$btnOK"))
end

これは、Rubyのmechanizelibを使用してフォームの自動送信用に作成したコードです。次のように返さMechanize::ResponseCodeErrorれます。コードにエラーは実際には表示されません。これがコードエラーなのか、サーバー側の問題なのか(サーバーがフォームの自動送信を阻止しているなど)を教えてください。

C:/Ruby193/lib/ruby/gems/1.9.1/gems/mechanize-2.4/lib/mechanize/http/agent.rb:29 1:in fetch': 500 => Net::HTTPInternalServerError for http://sample.com/NewTask.aspx -- unhandled response (Mechanize::ResponseCodeError) from C:/Ruby193/lib/ruby/gems/1.9.1/gems/mechanize-2.4/lib/mechanize.rb:1207:inpost_form'from C:/Ruby193/lib/ruby/gems/1.9 .1 / gems / mechanize-2.4 / lib / mechanize.rb:515:in submit' from C:/Ruby193/lib/ruby/gems/1.9.1/gems/mechanize-2.4/lib/mechanize/form.rb:178:insubmit'from auto_post.rb:27:in block in <main>' from (eval):23:inform_with' from auto_post.rb:13:in `'

4

1 に答える 1

1

fiddlerやcharlesなどのデバッグプロキシを介してプロキシする必要があります。

agent.set_proxy 'localhost', 8888

次に、ブラウザを同様にプロキシし、リクエストを比較します

于 2012-05-09T09:25:19.793 に答える