http://www.perlmonks.org?node_id=1013814


in reply to Re^5: Seeking assistance with WWW::Mechanize Form Submission
in thread Seeking assistance with WWW::Mechanize Form Submission

using these 3 variations:
$data=$mech->submit_form( form_name => 'HashForm1', fields => { login_password => 'password', login_username => 'username', prefLanguage => 00000000, submit => 'Log On', } );
and this
$mech->submit_form( form_name => 'HashForm1', fields => { login_password => 'password', login_username => 'username', prefLanguage => 00000000, }, button => "submit", );
and this
$mech->form_name('HashForm1'); $mech->field("login_username",'username'); $mech->field("login_password",'password'); $mech->field("prefLanguage",00000000); $mech->submit_form();

all yield the same 500 error. Trying to record the tranactions using httprecorder with the follwing line yields a 403

$mech->proxy(['https'], 'http://localhost:8080');

but it does yield this in the log:

$agent->get('https://192.168.0.2'); $agent->get('https://192.168.0.2/home.htm'); $agent->get('https://192.168.0.2/logon.htm');

I have tried all of the different combinations of submitting the post data as well, even though that seemed like the least likely way to resolve the problem. Is it possible something in the headers isn't being set that would prevent log in? This seems like such a simple task and yet its turning out to be quite difficult.

Replies are listed 'Best First'.
Re^7: Seeking assistance with WWW::Mechanize Form Submission
by Gangabass (Vicar) on Jan 22, 2013 at 02:55 UTC

    Try to set User-Agent (at the beginning of your code):

    $mech->agent_alias("Windows IE 6");
Re^7: Seeking assistance with WWW::Mechanize Form Submission
by Anonymous Monk on Jan 22, 2013 at 03:30 UTC

    This seems like such a simple task and yet its turning out to be quite difficult.

    It is because you're not being linear, because you're not speaking the right language

    If it works from your browser, it works because of the headers/requests it sends, so if you want it to work from LWP, send the exact same requests, in the exact same order, using the exact same headers

    If for whatever reason the website decides it doesn't like your requests, you didn't dot an I or cross a T, well, you'll have to figure it out, there is no secret, no magic, websites can be fantastically stupid in what they accept and what they reject, so if you have found a way that works, be as identical as possible