in reply to Very obscure WWW:Mechanize problem

The WWW::Mechanize documentation says that all things returned by the ->forms methods are HTML::Form objects. And searching them for "action" returns the ->action accessor.

Maybe that one helps you to emulate (re)setting the action to something different?

Replies are listed 'Best First'.
Re^2: Very obscure WWW:Mechanize problem
by andyholyer (Initiate) on Jan 08, 2012 at 20:47 UTC

    That's what I've got up to myself. What doesn't seem to be working is getting the syntax gnarly enough to actually work.

    *Sigh* Thanks, I'll keep digging...

      It seems unapproachable if you keep calling it obscure/gnarly...

      #!/usr/bin/perl -- use strict; use warnings; use WWW::Mechanize; my $ua = WWW::Mechanize->new(); use URI::file; $ua->get( URI::file->new( __FILE__ )->abs(URI::file->cw +d) ); #~ $ua->get( 'file:'. __FILE__ ); $ua->add_handler("request_send", sub { shift->dump; return }); $ua->add_handler("response_done", sub { shift->dump; return }); $ua->timeout( 1 ); $ua->update_html( <<'HTML','.');## $ua->{content} = <<'HTML'; <html> <head> <title> localhost form </title> </head> <body> <base href="http://localhost/"> <form method="POST" action="http://localhost/"> <input id="enterbutton" type="submit" name="user_choice" value="Enter" + /> <input type="submit" name="user_choice" value="Leave" /> </form> </body> </html> HTML my $form = $ua->form_number( 0 ); $form->action( $form->action . 'THE_NEW_ACTION/' ); $ua->submit; __END__ $ perl mechanize.inline.form.action.pl POST http://localhost/THE_NEW_ACTION/ Accept-Encoding: gzip Referer: file:mechanize.inline.form.action.pl User-Agent: WWW-Mechanize/1.71 Content-Length: 0 Content-Type: application/x-www-form-urlencoded (no content) 500 Can't connect to localhost:80 (timeout) Content-Type: text/plain Client-Date: Sun, 08 Jan 2012 21:03:56 GMT Client-Warning: Internal response Can't connect to localhost:80 (timeout)\n LWP::Protocol::http::Socket: connect: timeout at C:/perl/site/5.14.1/l +ib/LWP/Protocol/http.pm line 51.\n Error POSTing http://localhost/THE_NEW_ACTION/: Can't connect to local +host:80 (timeout) at mechanize.inline.form.action.pl line 39