Notre client a une configuration simple.Soumission automatique de formulaire avec PERL - débogage!
La page A a un formulaire qui soumet à la page B qui affiche les résultats de la requête. Malheureusement, il n'y a pas d'autre accès API ou DB pour obtenir les données.
Puisque nous avons besoin de faire cette requête souvent, nous avons décidé d'automatiser cette soumission avec Perl.
J'ai déterminé les paires valeur/clé de formulaire de la page A avec un renifleur et répliqué le code. Cependant, lors de l'exécution de la page du programme, B génère une erreur HTTP 500 sans autre explication significative.
Des pointeurs pour déboguer ce code? Code en lui-même est simple:
use strict; use warnings; use LWP; my $browser = LWP::UserAgent->new; my $url = "targeturl.asp" my $response = $browser->post($url, [ "HisSort" => "1", "RTsort" => "", "chkHisRun" => "on", "chkRTRun" => "on", "optAdHoc" => "on", "optHist" => "", "optServer" => "servername", "optStatus" => "", "optWhat" => "H", "txtEnd" => "", "txtFields" => "1,0,10,17,11,18,24,19,21,25,1", "txtHEnd" => "11/3/2010", "txtHStart" => "11/1/2010", "txtServer" => "", "txtStart" => "", ] );
Note: Je n'ont pas accès à la source de la page A ou page B
Vous devriez probablement fournir une URL complète. – Benoit
Si vous envoyez une requête identique, vous obtiendrez une réponse identique. Par conséquent, vous devez savoir où votre demande est différente de celle du navigateur. Y a-t-il des cookies, par exemple? Votre script Perl ne semble pas essayer de définir des en-têtes correspondant aux navigateurs. La page B ne parvient peut-être pas à analyser l'agent utilisateur, par exemple. –
Il peut également s'agir d'une chaîne UserAgent ($ browser-> agent ("...")) ou d'un cookie reçu plus tôt ... – gangabass