Hi everyone, [Someone just asked me about this, and it looks like the attachment got eaten, in any case I couldn't find it in an online archive of libwww, so here it is again in-line.
I have found the attached module to be useful when debugging. This tells you (I think) what $mech is sending to the server on a click() operation without needing to resort to tcpdump. In your code, you'll need use WWW::Mechanize::Debug; my $mech = WWW::Mechanize::Debug->new(...) # when you're ready to $mech->click(); print "Request is" . $mech->simulated_click(); Compare this output from what TamperData or LiveHTTPHeaders shows you when submitting the same request, and chances are, you've found your problem :-) Cheers, Peter -- Free Cellphone Monitoring Service www.MinuteWatcher.com ------------- package WWW::Mechanize::Debug; # (c) 2006 Peter Stevens. peter (dot) stevens (at) ch-open (dot) ch # This module may be disutributed under the same conditions as perl itself. # Debug routine(s?) for use with WWW::Mechanize # use strict; use warnings FATAL => 'all'; our $VERSION = '0.03'; use base qw( WWW::Mechanize ); sub new { my $class = shift; my %args = @_; my $self = $class->SUPER::new( %args ); return $self; } sub simulated_click { # invoke this method where you would invoke $mech->click() to find out what will # be sent to the server. Compare the results with Firefox/TamperData. If the # requests are the same, the results should be the same. # my $this = shift; my @args = @_ ; my ( $f, $r, $t); $f = $this->current_form(); # or one of its cousins - gives an HTML::Forms object $r = $f->click( @args ); # gives HTTP::Request object $r = $this->_modify_request( $r ); # v1.12 internal routine. Compatibility? $t = $r->as_string(); # text of the request to compare with Tamper Data results. return $t; } return 1;