ruby-on-rails – 如何在使用Mechanize时调试Net :: HTTPInterna
发布时间:2020-12-16 23:20:49 所属栏目:百科 来源:网络整理
导读:c:/ruby/lib/ruby/gems/1.8/gems/mechanize-1.0.0/lib/mechanize.rb:259:in `get': 500 = Net::HTTPInternalServerError (Mechanize::ResponseCodeError) 当我尝试导航到以下网页时出现上述错误 http://fakewebsite.com//admin/edit_building.cfm?page=build
c:/ruby/lib/ruby/gems/1.8/gems/mechanize-1.0.0/lib/mechanize.rb:259:in `get': 500 => Net::HTTPInternalServerError (Mechanize::ResponseCodeError) 当我尝试导航到以下网页时出现上述错误 http://fakewebsite.com//admin/edit_building.cfm?page=buildings&updateMode=yes&id=1251 将链接复制并粘贴到浏览器中时,我可以正常导航. 注意:本网站确实需要登录,我使用以下代码处理 $agent = Mechanize.new $agent.get('http://fakewebsite//admin/login.cfm?res=-5') form = $agent.page.forms.first form.EMail = "admin" form.Password = "password" form.submit 此登录工作正常,因为我访问受登录保护的其他网页. 我不知道从哪里开始,有什么建议吗? 我从下面的帮助中解决了这个问题.在我成功登录网站后结果显示,它将我转到主页.这个主页上有几个指向其他网页的iframe. Mechanize不会自动检索这些页面.当我手动检索它们时,我发现这些页面设置了访问网站上其他页面所必需的cookie.我错误地认为所有cookie都会在登录过程完成后但在我到达主页之前设置好. 解决方法
我首先启用日志记录:
agent.log = Logger.new(STDOUT) 这将为您提供所有标题,传入和传出,您可以使用它们来理解问题.另外,我会使用像Scoop这样的http嗅探器,它会告诉我在浏览器中手动输入此URL时会发生什么.然后,您将能够比较浏览器正在做什么以及机械化正在做什么并找到问题. 此外,尝试设置用户代理,因为如果机械化诚实地介绍自己,一些网站会终止连接. agent.user_agent_alias = 'Mac Safari' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |