2010-04-02 13 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) 

je reçois l'erreur ci-dessus lorsque je tente de naviguer vers la page Web suivanteComment déboguer une erreur Net :: HTTPInternalServerError lors de l'utilisation de Mechanize?

http://fakewebsite.com//admin/edit_building.cfm?page=buildings&updateMode=yes&id=1251 

Je peux naviguer très bien quand copier et coller le lien dans un navigateur.

Note: Ce site ne nécessite une connexion, que je manipule avec le code comme le

$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 

suite Cette connexion fonctionne très bien, puisque j'accéder à d'autres pages Web protégées par la connexion.

Je ne sais pas où aller à partir d'ici, des suggestions? J'ai résolu le problème avec l'aide ci-dessous. Se révèle après que je me connecte avec succès dans le site, il me prend pour une page d'accueil. Cette page d'accueil contient plusieurs iframes pointant vers d'autres pages Web. Mechanize ne récupère pas automatiquement ces pages. Quand je les ai récupérées manuellement, j'ai découvert que ces pages étaient en train de configurer les cookies qui étaient nécessaires pour accéder aux autres pages du site. J'avais supposé à tort que tous les cookies seraient réglés une fois le processus de connexion terminé, mais avant que je n'arrive à la page d'accueil.

+0

J'ai rencontré un problème presque identique. Seriez-vous capable d'expliquer comment vous avez réellement résolu cela? (C'est, comment vous avez contourné le problème de cookie?) – CodeBiker

Répondre

9

Je commencerais en permettant l'exploitation forestière:

agent.log = Logger.new(STDOUT) 

Cela va vous donner tous les en-têtes, entrants et sortants, que vous pouvez utiliser pour comprendre le problème. De plus, j'utiliserais un sniffeur http comme Scoop qui me montrerait ce qui se passe quand je saisis manuellement cette URL dans le navigateur. Ensuite, vous serez en mesure de comparer ce que fait votre navigateur avec ce que fait le mécanicien et de trouver le problème.

Également, essayez de définir l'agent utilisateur car certains sites Web mettent fin à une connexion si mécanisée se présente honnêtement.

agent.user_agent_alias = 'Mac Safari' 
+0

Bonne idée! Cela aide beaucoup! – Geo