Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Mechanize时,如何调试Net::HTTPInternalServerError错误?_Ruby On Rails_Ruby_Nokogiri_Mechanize - Fatal编程技术网

Ruby on rails 使用Mechanize时,如何调试Net::HTTPInternalServerError错误?

Ruby on rails 使用Mechanize时,如何调试Net::HTTPInternalServerError错误?,ruby-on-rails,ruby,nokogiri,mechanize,Ruby On Rails,Ruby,Nokogiri,Mechanize,当我尝试导航到以下网页时,我遇到上述错误 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

当我尝试导航到以下网页时,我遇到上述错误

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
这个登录很好用,因为我可以访问受该登录保护的其他网页

我不知道该怎么办,有什么建议吗



我在下面的帮助下解决了这个问题。结果是,在我成功登录该网站后,它会将我带到一个主页。此主页中有几个iFrame指向其他网页。Mechanize不会自动检索这些页面。当我手动检索这些页面时,我发现这些页面正在设置访问站点上其他页面所需的cookies。我错误地认为,在登录过程完成后,但在我到达主页之前,所有cookie都将被设置。

我将首先启用日志记录:

$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
这将为您提供所有的头,传入和传出,您可以使用它们来理解问题。另外,我会使用http嗅探器,比如Scoop,当我在浏览器中手动输入这个url时,它会告诉我发生了什么。然后,您将能够比较浏览器正在执行的操作和mechanize正在执行的操作,并找到问题所在

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

agent.log = Logger.new(STDOUT)

好主意!这很有帮助!我遇到了一个几乎相同的问题。你能解释一下你是如何解决这个问题的吗?(也就是说,你是如何解决饼干问题的?)
agent.user_agent_alias = 'Mac Safari'