2010-04-02 16 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

相關問題