2010-04-02 17 views
6
c:/ruby/lib/ruby/gems/1.8/gems/mechanize-1.0.0/lib/mechanize.rb:259:in `get': 500 => Net::HTTPInternalServerError (Mechanize::ResponseCodeError) 

我得到上面的错误,当我尝试浏览以下网页如何在使用Mechanize时调试Net :: HTTPInternalServerError错误?

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指向其他网页。机械化不会自动检索这些页面。当我手动检索它们时,我发现这些页面正在设置访问网站上其他页面所必需的Cookie。我错误地认为在登录过程完成之后但到达主页之前,所有的cookies都会被设置。

+0

我遇到了几乎相同的问题。你能解释你是如何解决这个问题的吗? (也就是说,如何解决cookie问题?) – CodeBiker 2014-10-21 03:41:00

回答

9

我想通过启用日志记录开始:

agent.log = Logger.new(STDOUT) 

这将会给你所有的头,传入和传出,你可以用它来理解这个问题。另外,我会使用像Scoop这样的HTTP嗅探器,当我在浏览器中手动输入这个URL时,会向我显示发生了什么。然后,您将能够比较浏览器正在做什么和机械化正在进行并发现问题。

此外,尝试设置用户代理,因为如果机械化诚实介绍自己,一些网站会终止连接。

agent.user_agent_alias = 'Mac Safari' 
+0

好主意!这有助于很多! – Geo 2010-11-25 11:55:26

相关问题