【问题标题】:How do I debug a Net::HTTPInternalServerError error when using Mechanize?使用 Mechanize 时如何调试 Net::HTTPInternalServerError 错误?
【发布时间】:2011-02-03 16:44:17
【问题描述】:
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 都会在登录过程完成后但在我到达主页之前设置。

【问题讨论】:

  • 我遇到了几乎相同的问题。你能解释一下你是如何解决这个问题的吗? (也就是说,你是如何解决 cookie 问题的?)

标签: ruby-on-rails ruby nokogiri mechanize


【解决方案1】:

我将首先启用日志记录:

agent.log = Logger.new(STDOUT)

这将为您提供所有标题,包括传入和传出,您可以使用它们来理解问题。此外,我会使用像 Scoop 这样的 http 嗅探器,当我在浏览器中手动输入这个 url 时,它会告诉我发生了什么。然后,您将能够比较您的浏览器正在做什么和 mechanize 正在做什么并找出问题所在。

另外,请尝试设置用户代理,因为如果 mechanize 诚实地自我介绍,某些网站确实会终止连接。

agent.user_agent_alias = 'Mac Safari'

【讨论】:

  • 好主意!这很有帮助!
猜你喜欢
  • 1970-01-01
  • 2010-11-01
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-17
相关资源
最近更新 更多